簡體   English   中英

Phonegap(3.3.0)FileReader readAsText()無法正常工作

[英]Phonegap (3.3.0) FileReader readAsText() not working

因此,我嘗試使用phonegap文件AP​​I保存並稍后在應用程序中加載文件。 保存似乎正在工作,但是讀取文件會引發以下錯誤:

processMessage failed: Stack: TypeError: Object #<an Object> has no method 'readAsText'
  at [object Object].readAsText (file:///android_asset/www/plugins/org.apache.cordova.file/www/FileReader.js:130:33)
  at file:///android_asset/www/index.html:3843:15
  at file:///android_asset/www/plugins/org.apache.cordova.file/www/DirectoryEntry.js:100:9
  at Object.callbackFromNative (file:///android_asset/www/phonegap.js:292:54)
  at processMessage (file:///android_asset/www/phonegap.js:1029:21)
  at Function.processMessages (file:///android_asset/www/phonegap.js:1063:13)
  at pollOnce (file:///android_asset/www/phonegap.js:933:17)
  at pollOnceFromOnlineEvent (file:///android_asset/www/phonegap.js:928:5)

無論我做什么,似乎總是會拋出此錯誤。 我將fileReader對象打印到控制台,並使用weinre檢查了它。 它具有帶有readAsText()函數的原型,所以我真的很茫然為什么它不起作用...

這就是我保存文件的方式:

var request = window.requestFileSystem;
if(typeof request != 'undefined') {
    var fileSystem;
    var writer;
    request(LocalFileSystem.PERSISTENT, 0, function (FS) {
        fileSystem = FS;
        fileSystem.root.getFile("offlineData.txt", {create: true, exclusive: false}, function(fileEntry) {
            fileEntry.createWriter(function(w) {
                writer = w;
                writer.write('This is some text yo');
            }, function(e) {console.log(e);});}, 
        function(e) {console.log(e); console.log('There was an error getting the file to write')});} , 
    function(e) {\console.log('There was an error getting the file system');});}    

在稍后的流程中,我將執行以下操作:

request(LocalFileSystem.PERSISTENT, 0, function(FS) {
                    fileSystem = FS;
                    fileSystem.root.getFile("offlineData.txt", null, function(_file) {
                        var reader = new FileReader();
                        reader.onloadend = function (evt) {
                            console.log("read success");
                            console.log(evt.target.result);
                        };
                        reader.onerror = function(evt) {
                            console.log("Error read text");
                            console.log("Error"+evt.error.code);                                
                        };
                        reader.onabort = function(evt) {
                            console.log("aborted read text");
                            console.log(evt.target.result);                             
                        };
                        reader.onloadstart = function(evt) {
                            console.log("started reading");
                        };
                        console.log(reader);
                        reader.readAsText(_file);                               
                    });
                }, function(e) {console.log(e); console.log('There was an error getting the file.')});

在您的示例中,_file是fileEntry,而不是文件內容。 你可以嘗試一下:

fileSystem.root.getFile("offlineData.txt", null,
    function (fileEntry) {
        fileEntry.file(function (_file) {
            var reader = new FileReader();
            reader.onloadend = function () {
                console.log("read success");
                console.log(evt.target.result);
            };
            reader.readAsText(_file);
        });
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM