我正在将一个应用程序从phonegap 2. *更新到cordova 3.4 现在情况正常,只有文件下载不起作用。
我需要从互联网(主机编辑)下载文件并将其存储为JSON文件,以便稍后处理内容。
下载工作正常,文件将显示在文件系统中,但FileReader不会触发onloadend
事件。
我尝试了一些事情,例如onprogress
或onerror
事件,file.toURI
和FileReader.readAsDataURL
- 没有任何效果。有人有什么想法吗?
备注:
app.log
可以被视为console.log
print_r
在另一个文件中定义,工作正常完整代码(提取和缩短):
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));
}
);
答案 0 :(得分:6)
File API已更新。请参阅此帖子:https://groups.google.com/forum/#!topic/phonegap/GKoTOSqD2kc
file.file(function(e) {
console.log("called the file func on the file ob");
var reader = new FileReader();
reader.onloadend = function(evt) {
app.log('onloadend');
app.log(evt.target.result);
};
reader.readAsText(e);
});
答案 1 :(得分:0)
目前无法验证这一点,但自3.0以来,Cordova将设备级API实现为插件。使用命令行界面中描述的CLI插件命令为项目添加或删除此功能:
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git
$ cordova plugin rm org.apache.cordova.core.file
您是否已将插件添加到项目中?