Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FileReader not firing onloadend in Ionic 2

I'm trying to read a local file using the cordova-file-plugin. At the moment I'm able to read the content of local directories and select a single file. But I have problems to get the content of the file.

Here's my function that's called by clicking a button after selecting a file from list:

import() {
    window.resolveLocalFileSystemURL(this.file.nativeURL, this.gotFile, this.fail);
}

And here're the two functions gotFile and fail:

fail(e) {
    console.log(e);
}

gotFile(fileEntry) {
    var file = fileEntry.nativeURL;

    fileEntry.file(function(file) {
        var reader = new FileReader();

        reader.onloadend = function(e) {
             console.log('onloadend()'); 
        };

        reader.readAsText(file);

        console.log(reader);
    }); 
}

I can see in the log the reader with all the wanted content of my file under result, but I'm not able to get it and use it. The readyState is 2, but all inside reader.onloadend isn't called. With Ionic 1 this code works without any problems.

I would be very glad, if there's anyone how can help me. Thanks in advance!

like image 652
user2836375 Avatar asked Mar 29 '16 11:03

user2836375


2 Answers

Known issue in ionic 2

Loading zone.js before cordova.js fixes it.

Specific to ionic2 maintain this sequence order.

<script src="build/polyfills.js"></script> <script src="cordova.js"</script>

as the polyfills.js executes the zone.js.

like image 117
Parth Ghiya Avatar answered Nov 11 '22 22:11

Parth Ghiya


Although I haven't used onloadend, I've been successfully using the onload event handler instead in Ionic 2, maybe you could give that one a try.

Keep in mind that it will return only if the operation is successful.

like image 39
Csaba Illés Avatar answered Nov 11 '22 23:11

Csaba Illés