【问题标题】:Saving files in Phonegap在 Phonegap 中保存文件
【发布时间】:2019-03-19 16:03:50
【问题描述】:

在过去的几个小时里,我一直在浏览文档和所有内容,但没有成功... 我想从某个服务器下载一个文件并将其保存到我的手机上(应用程序存储文件的目录,这些文件只对我的应用程序可见,并且在应用程序已卸载)。我想存储一个文件并写入(我已经完成了下载部分)。使用以下代码,当我运行它时,它可以工作并显示“文件”中的文本,但是当我使用一些文件资源管理器应用程序搜索文件时,我“创建”的文件远未找到。

干杯!

编辑注意事项: 好的,所以我现在什至尝试使用 USB 连接从计算机上在我的手机上创建一个文件,所以我知道该文件存在的事实...... 我从电脑创建的文件的路径是:

这台电脑\Galaxy S7 edge\Phone\Android\data\com.phonegap.musicapp2\text.txt

我从 JSON.stringify(dirEntry) 得到的响应代码如下

{"isFile":false,"isDirectory":true,"name":"com.phonegap.musicapp2","fillPath":"/data/user/0/com.phonegap.musicapp2/", "filesystem":"","nativeURL":"file:///data/user/0/com.phonegap.musiapp2/"}

所以当我从下面运行代码时,它给了我

getFile 出错:{"code":1}

我查看了文档,它说代码 1 的意思是:NOT_FOUND_ERR (http://prntscr.com/n071kx)

“下面的代码”

function readFile(fileEntry) {

    fileEntry.file(function (file) {
        var reader = new FileReader();

        reader.onloadend = function() {
            DebugConsole.log("Successful file read: " + this.result);
            //  displayFileData(fileEntry.fullPath + ": " + this.result);
        };

        reader.readAsText(file);

    }, onErrorReadFile);
}

window.resolveLocalFileSystemURL(cordova.file.applicationStorageDirectory, function(dirEntry) {

    DebugConsole.log(JSON.stringify(dirEntry));

    dirEntry.getFile('text.txt', {create: false, exclusive: false}, function(fileEntry) {

        //writeFile(fileEntry, null, isAppend);
        readFile(fileEntry);

    }, function(e) {

        DebugConsole.log('Error from getFile: ' + JSON.stringify(e));
    });
});

旁注: 应用程序从不请求访问我的内部存储的权限。 我进入 Apps/myapp/permissions 并显示该应用程序无权访问存储。我打开它但仍然没有运气。 我想我需要以某种方式从应用请求存储访问权限,但我似乎找不到方法?

【问题讨论】:

  • 您应该尝试运行媒体扫描仪
  • @KeySee 需要解释一下吗? (编辑:Nvm,扫描它,仍然没有文件)
  • 尝试将其保存到microsd或模拟空间的根目录,即使有Music文件夹也可以检查
  • 我已经用更多信息编辑了这个问题
  • 尝试使用cordova-plugin-file-transfer,它允许您在一次调用中下载和存储;)cordova.apache.org/docs/en/latest/reference/…

标签: javascript android cordova phonegap


【解决方案1】:

我设法通过以下方法找到了解决方案

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "Android/data/app.name/files/", success, fail);

【讨论】:

  • 我建议你使用相同但更可靠的 cordova.file.dataDirectory
  • @KeySee Nah,不起作用......即使它说它已成功创建,它也不会在任何地方创建文件
  • 奇怪,一定要和其他安卓系统测试一下
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多