Cordova 3.4 FileReader无法正常工作(没有onloadend)

时间:2014-05-13 07:07:28

标签: javascript ios cordova filereader

我正在将一个应用程序从phonegap 2. *更新到cordova 3.4 现在情况正常,只有文件下载不起作用。

我需要从互联网(主机编辑)下载文件并将其存储为JSON文件,以便稍后处理内容。 下载工作正常,文件将显示在文件系统中,但FileReader不会触发onloadend事件。

我尝试了一些事情,例如onprogressonerror事件,file.toURIFileReader.readAsDataURL - 没有任何效果。有人有什么想法吗?

备注:

  • 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));

    }
);

2 个答案:

答案 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

您是否已将插件添加到项目中?