簡體   English   中英

Phonegap FileReader readAsText返回null,但readAsDataURL起作用

[英]Phonegap FileReader readAsText returns null but readAsDataURL works

我正在使用Phonegap下載檔案,將其解壓縮,然后閱讀文件。 一切正常,直到我嘗試以文本形式讀取文件。 如果我使用readAsDataURL()那么我會得到一堆東西記錄到控制台。

function( file ) {
    console.log(file);
    var reader = new FileReader();
    reader.onloadend = function( evt ) {
        console.log( evt.target.result );
    };                      
    reader.readAsDataURL( file );
}

如果我使用readAsText()得到null 文件范圍從300KB到1.4MB,但是所有文件在控制台中都返回null

reader.readAsText( file );          

為什么一個函數返回某些內容而另一個為null? 可以讀取的文字大小有限制嗎?

這是我在創建reader之前記錄的file對象,我正在將函數應用到其中(我縮短了文件名):

{
    "name":"categories.json",
    "fullPath":"/var/mobile/.../Documents/data/file.json",
    "type":null,
    "lastModifiedDate":1380535318000,
    "size":382456
}

這是readAsText()的evt對象:

{
    "type":"loadend",
    "bubbles":false,
    "cancelBubble":false,
    "cancelable":false,
    "lengthComputable":false,
    "loaded":0,
    "total":0,
    "target":{
        "fileName":"/var/mobile/.../Documents/data/file.json",
        "readyState":2,
        "result":"null",
        "error":null,
        "onloadstart":null,
        "onprogress":null,
        "onload":null,
        "onerror":null,
        "onabort":null
    }
}

更新 :我在W3C規范中看到了File API,如果發生錯誤,結果只會設置為null。 但是我嘗試添加一個reader.onerror()函數,但是沒有得到調用。

如果在讀取blob參數期間發生錯誤,請將readyState設置為DONE並將結果設置為null。 繼續執行錯誤步驟。

http://www.w3.org/TR/FileAPI/#dfn-readAsText

您可能正在獲取fileEntry而不是fileObject。 假設文件實際上是fileEntry,請嘗試以下操作:

var
    fileEntry = file, //for example clarity - assumes file from OP's file param
    reader = new FileReader()
;

fileEntry.file( doSomethingWithFileObject );//gets the fileObject passed to it

function doSomethingWithFileObject(fileObject){

    reader.onloadend = function(e){
        doSomething(e.target.result); //assumes doSomething defined elsewhere
    }

    var fileAsText = reader.readAsText(fileObject);
}

絕對是可以減少雜物的API。

暫無
暫無

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

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