FileReader无法在iOS 8上运行

FileReader not working on iOS 8

本文关键字:运行 iOS FileReader      更新时间:2023-09-26

我无法让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不起作用"。

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

我在iPhone上的Safari也遇到了同样的问题(但iPhone的Chrome上没有这个问题!)。

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

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

您将得到错误代码4。根据HTMLGoodies-响应HTML5 FileReader事件

错误代码4=NOT_READABLE_ERR:无法读取该文件,因为自获取该文件以来权限发生了更改,可能是因为该文件被另一个程序锁定。

这是一个错误

应该在下一个版本中修复