我现在正在开发一个cordova app whitch平台浏览器(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(value of
window.isFilePluginReadyRaised()
)
似乎filePluginIsReady
事件没有被解雇! WHY吗
此外,如果我直接在deviceready
事件下编写代码。它也将失败,并显示以下错误消息:
代码:5
消息:"提供给API的URI格式错误,或者生成的数据网址超出了数据网址的网址长度限制。"
name:" EncodingError"
任何人都可以指出原因或给我一个正确的例子吗?
感谢任何帮助。
答案 0 :(得分:1)
为什么会发生这种情况的一件事是,可能是你附加到filePluginIsReady的时间已经被触发了。尝试订阅appStart.js中的事件或应用中的第一个文件。它对我有用