我正在使用 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 );
为什么一个函数会返回一些东西而另一个是空的?它可以阅读的文本大小有限制吗?
这是file
我在创建之前记录的对象,我reader
将函数应用于(我缩短了文件名):
{
"name":"categories.json",
"fullPath":"/var/mobile/.../Documents/data/file.json",
"type":null,
"lastModifiedDate":1380535318000,
"size":382456
}
这是 evt 对象readAsText()
:
{
"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
}
}
更新:我在文件 API 的 W3C 规范中看到,如果发生错误,结果只会设置为 null。但我尝试添加一个reader.onerror()
函数,但没有被调用。
如果在读取 blob 参数时发生错误,请将 readyState 设置为 DONE,并将 result 设置为 null。继续执行错误步骤。