Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cordova 3.4 FileReader not working (no onloadend)

I am updating an app from phonegap 2.* to cordova 3.4 Things are running smooth now, only the file download is not working.

I need to download a file from the internet (host edited) and store it as an JSON file, to have the contents processed later on. The download is working fine, the file will be shown in the filesystem, but the FileReader does not fire the onloadend event.

I have tried a few things like onprogress or onerror events, also file.toURI and FileReader.readAsDataURL - nothing worked. Anybody any ideas?

Notes:

  • app.log can be seen as an alias for console.log
  • print_r is defined in another file, working fine
  • The downloaded file is just a few kB, shouldn't be a performance issue
  • Running on iOS hardware

Full code (extracted and shortened):

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

    }
);
like image 577
Vestalis Avatar asked May 13 '14 07:05

Vestalis


1 Answers

The File API has been updated. See this post: 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);

});
like image 141
Phillip Plum Avatar answered Sep 29 '22 03:09

Phillip Plum