3

我现在正在开发一个科尔多瓦应用程序,其平台是浏览器(Chrome)。

使用 cordova-plugin-file 读取文件时失败。

根据cordova-plugin-file 的文档:Chrome quirks,它说:

设备就绪事件后 Chrome 文件系统未立即就绪。作为一种解决方法,您可以订阅filePluginIsReady事件....您可以使用window.isFilePluginReadyRaised函数来检查是否已经引发了事件。

我这样写我的代码:

document.addEventListener('deviceready', dataRead, false);
function dataRead() {
  window.addEventListener('filePluginIsReady', readyToRead, false);
  console.log(window.isFilePluginReadyRaised());
}

function readyToRead(){
  window.initPersistentFileSystem(10*1024*1024, function() {
    var fs = cordova.file.applicationDirectory;
    console.log(fs);
    window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "www/1111.csv", gotFile, fail);
  },function (e) {
    console.log(e);
  });
}

function fail(e) {
  console.log("FileSystem Error");
  console.dir(e);
}

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

    reader.onloadend = function(e) {
      console.log("Text is: "+this.result);
    }
    reader.readAsText(file);
  });
}

它无法读取文件,控制台中的消息如下:

为文件添加代理 ------------------cordova.js:942

授予持久 fs 配额 ---------Preparing.js:170

false --------------------------------------app.js:4(的值window.isFilePluginReadyRaised()

似乎该filePluginIsReady事件没有触发!为什么?

此外,如果我deviceready直接在事件下编写代码。它也会失败并显示以下错误消息:

代码:5

消息:“提供给 API 的 URI 格式错误,或者生成的数据 URL 已超出数据 URL 的 URL 长度限制。”

名称:“编码错误”

任何人都可以指出原因或给我一个正确的例子吗?

任何帮助表示赞赏。

4

1 回答 1

1

可能发生这种情况的一件事是,您附加到 filePluginIsReady 的时间可能已经触发了该事件。尝试订阅 appStart.js 或应用中的第一个文件中的事件。它对我有用

于 2016-03-11T13:05:40.167 回答