![](/img/trans.png)
[英]Difference between readAsDataURL() and readAsArrayBuffer() and readAsText() in JavaScript FileReader
[英]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。 繼續執行錯誤步驟。
您可能正在獲取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.