将文件复制到 Cordova 的内部存储中

Posted

技术标签:

【中文标题】将文件复制到 Cordova 的内部存储中【英文标题】:Copying a file into internal storage in Cordova 【发布时间】:2018-01-05 10:31:02 【问题描述】:

我有一个 Cordova 移动应用程序,并且我正在实现一个导入功能。用户应将文件clients.db 放在Documents 文件夹中,从应用程序启动导入功能,应用程序本身应将此文件从当前位置复制到内部数据库存储,准备作为SQLite 打开数据库

这是我的代码:

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "/Documents/clients.db", function(fs) 
    window.resolveLocalFileSystemURL("file://data/data/com.app.clients/databases/",function(directoryEntry) 
       fs.copyTo(directoryEntry, "clients.db", function() 
          //done
       , function(err) 
          //here I get err = 1
       );
    , function()
        //err
    );
, function()
    //err
);

文件clients.db 位于Documents 文件夹中,但是当我启动代码时,copyTo 函数无法返回 err = 1,这意味着找不到文件。

在调试时,我注意到变量 fs 的值正确:

filesystem : FileSystem fullPath : "/Documents/clients.db" isDirectory : false isFile : true name : "clients.db" nativeURL : "file:///storage/emulated/0/Documents/clients.db"
__proto__ : Entry

directoryEntry 也是正确的,它被识别为一个目录

【问题讨论】:

【参考方案1】:

url 是否与文件夹路径匹配?看起来很奇怪。

【讨论】:

你的意思是 file:///data/data/com.app.clients/databases/ ??为什么看起来很奇怪? 一个是解析origin,一个是解析destination。我做错了吗? sry 没看到你使用 fs。看看你可以读取文件并向目标文件夹写入内容 使用任何cordova函数的根路径是什么意思? ***.com/questions/31548292/…或许能帮到你【参考方案2】:

参考我的代码here。 from 位置应该在第一个 resolveLocalFileSystemURL 调用和第二个的 to 位置。

【讨论】:

以上是关于将文件复制到 Cordova 的内部存储中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用cordova插件挂钩将文件复制到/res/raw

Cordova / Javascript 将图像从 URL 复制到本地存储中

我如何将PDF复制到内部存储中? -Android studio

cloud/gsutil 将文件从实例复制到存储桶

如何在特定查看器中从内部存储打开文件? [复制]

Cloud Function 将存储桶中的所有文件复制到同一个 GCS 存储桶内的文件夹中