Javascript Cordova 3.4文件读取器不工作(无onloadend)
我正在将一个应用程序从phonegap 2.*更新到cordova 3.4 现在一切都很顺利,只是文件下载不起作用 我需要从internet下载一个文件(主机编辑)并将其存储为JSON文件,以便稍后处理内容。 下载工作正常,文件将显示在文件系统中,但FileReader不会触发Javascript Cordova 3.4文件读取器不工作(无onloadend),javascript,ios,cordova,filereader,Javascript,Ios,Cordova,Filereader,我正在将一个应用程序从phonegap 2.*更新到cordova 3.4 现在一切都很顺利,只是文件下载不起作用 我需要从internet下载一个文件(主机编辑)并将其存储为JSON文件,以便稍后处理内容。 下载工作正常,文件将显示在文件系统中,但FileReader不会触发onloadend事件 我尝试过一些事情,比如onprogress或onerror事件,还有file.toURI和FileReader.readAsDataURL——都没有效果。有人有什么想法吗 注意事项: var fil
onloadend
事件
我尝试过一些事情,比如onprogress
或onerror
事件,还有file.toURI
和FileReader.readAsDataURL
——都没有效果。有人有什么想法吗
注意事项:
var fileTransfer = new FileTransfer();
var loadingStatus = 0;
fileTransfer.onprogress = function (progressEvent) {
// if we have the complete length we can calculate the percentage, otherwise just count up
if (progressEvent.lengthComputable) {
loadingStatus = Math.floor(progressEvent.loaded / progressEvent.total * 100);
} else {
loadingStatus++;
}
app.log('Transfer Progress: ' + loadingStatus);
};
fileTransfer.download(
encodeURI('http://www.example.com/export'),
'cdvfile://localhost/persistent/import.json',
function (file) {
var FileReader = new FileReader();
FileReader.onloadend = function (evt) {
app.log('Filereader onloadend');
app.log(evt);
};
FileReader.readAsText(file);
},
function (error) {
// FileTransfer failed
app.log("FileTransfer Error: " + print_r(error));
}
);
可以看作是app.log
console.log
在另一个文件中定义,工作正常print\r
- 下载的文件只有几kB,不应该是性能问题
- 在iOS硬件上运行
var fileTransfer = new FileTransfer();
var loadingStatus = 0;
fileTransfer.onprogress = function (progressEvent) {
// if we have the complete length we can calculate the percentage, otherwise just count up
if (progressEvent.lengthComputable) {
loadingStatus = Math.floor(progressEvent.loaded / progressEvent.total * 100);
} else {
loadingStatus++;
}
app.log('Transfer Progress: ' + loadingStatus);
};
fileTransfer.download(
encodeURI('http://www.example.com/export'),
'cdvfile://localhost/persistent/import.json',
function (file) {
var FileReader = new FileReader();
FileReader.onloadend = function (evt) {
app.log('Filereader onloadend');
app.log(evt);
};
FileReader.readAsText(file);
},
function (error) {
// FileTransfer failed
app.log("FileTransfer Error: " + print_r(error));
}
);
目前无法验证这一点,但从3.0开始,Cordova将设备级API作为插件实现。使用命令行界面中描述的CLI的plugin命令为项目添加或删除此功能:
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
$ cordova plugin rm org.apache.cordova.core.file
您是否已将插件添加到项目中?文件API已更新。见此帖:
当然,所有插件都已添加并运行,否则无法下载;-)嗯,你检查过onloadstart和onload事件是否触发了吗?事件没有触发,似乎没有Phillip的更改,
readAsText
函数根本没有被调用。遗憾的是,JavaScript或Cordova没有发出任何通知。