• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

javascript - Phonegap FileReader readAsText 返回 null 但 readAsDataURL 有效

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:23:18 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 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 );          

为什么一个函数会返回一些东西而另一个是空的?它可以阅读的文本大小有限制吗?

这是我在创建 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
    }
}

更新:我在文件 API 的 W3C 规范中看到,只有在发生错误时才会将结果设置为 null。但我尝试添加一个 reader.onerror() 函数,但没有被调用。

If an error occurs during reading the blob parameter, set readyState to DONE and set result to null. Proceed to the error steps.

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



Best Answer-推荐答案


您可能一直在抓取文件条目而不是文件对象。假设文件实际上是 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。

关于javascript - Phonegap FileReader readAsText 返回 null 但 readAsDataURL 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119829/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap