FileReader 无法在 iOS 8 上运行

Posted

技术标签:

【中文标题】FileReader 无法在 iOS 8 上运行【英文标题】:FileReader not working on iOS 8 【发布时间】:2014-09-23 15:32:06 【问题描述】:

我无法让 FileReader 在 ios 8 中工作。以下演示说明了这一点(iOS 的 jsFiddle 链接 - http://jsfiddle.net/gys6rubg/1/):

var file = document.getElementById('file-input');
file.addEventListener('change', function(event) 
    var file = this.files[0];
    
    if(!file) 
        alert('No file');
        return;
    
    
    var reader = new FileReader();
    var timeout = setTimeout(function() 
         alert('FileReader not functioning');   
    , 500);
    reader.onload = function(event) 
        clearTimeout(timeout);
        alert('Base64 length - ' + event.target.result.length);
    ;    
    
    reader.readAsDataURL(file);
);
<form>
    <input id="file-input" type="file" />
</form>

这个console.log 是大多数浏览器中Base64 字符串的长度,但在iOS 8 Safari 上它是console.log 的'FileReader not working'。

有什么办法可以解决这个问题,或者我做错了什么?

【问题讨论】:

糟糕,我在未登录时不小心编辑了帖子。 【参考方案1】:

我在 iPhone 上使用 Safari 时遇到了同样的问题(但在 iPhone 版 Chrome 上不存在这个问题!)。

如果添加错误事件处理程序:

reader.onerror = function (e) 
    alert("error " + e.target.error.code + " \n\niPhone iOS8 Permissions Error.");

您将收到错误代码 4。 根据htmlGoodies - Responding to HTML5 FileReader Events

错误代码 4 = NOT_READABLE_ERR:由于在获取文件后权限发生更改,因此无法读取该文件 - 可能是因为该文件已被另一个程序锁定。

【讨论】:

UIWebView 不受影响,只影响 WKWebView。由于 Chrome 使用 UIWebView(我相信他们还没有转移到 WKWebView)它不会遇到这个问题。 我使用的是 iOS9,在读取 iCloud 文件(即点号文件)时遇到了这个问题。它给了我一个错误代码 4。如果文件是来自相机胶卷的图像,则没有问题。【参考方案2】:

it's a bug

应该在下一个版本中修复

【讨论】:

没有什么是真正有用的。显然,如果您将网页固定到主屏幕并且在固定时它具有 但我还没有尝试过,则它可以工作。跨度> 我想我会给出“存在 iOS 8 错误。请使用其他设备或升级您的手机”错误消息。谢谢。 仅供参考:8.0.2 更新显然修复了 FileReader 的所有问题。快乐和幸福。

以上是关于FileReader 无法在 iOS 8 上运行的主要内容,如果未能解决你的问题,请参考以下文章

Ad hoc 无法在 iPhone 5 iOS 8 上运行

我的应用在 iPad 模拟器上运行良好,但在 iPad(iOS 8.4)上崩溃,xcode 说无法在捆绑中加载 NIB

java.io.FileReader 将要读取的文件放在哪里?

FileReader和FileWriter文件复制

TypeError:无法在“FileReader”上执行“readAsDataURL”:参数 1 不是“Blob”类型

FileReader实现读取文件内容并输出到屏幕上