JavaScript readAsBinaryString E11上的函数

在这页面 http://www.html5rocks.com/en/tutorials/file/dndfiles/如果你向下滚动到示例“示例:切片文件,尝试!您将看到readAsBinaryString API的使用来读取本地文件的字节.

我看过IE(我的case它的IE11)不支持readAsBinaryString.

即使在HTML5 File API read as text and binary帖子中提到的这个代码在IE11中的readAsBinaryString中断.

我看到一些堆栈溢出的帖子,建议使用ReadAsArrayBuffer().但它也没有工作.它返回未定义.

如果我必须在IE11上运行,我的问题是什么选择?可以编写另一个IE兼容的JS函数,它将执行readAsBinaryString()的JOB.

解决方法

这是我的解决方案.
var reader = new FileReader();
reader.readAsBinaryString(fileData);
reader.onload = function(e) {
  if (reader.result) reader.content = reader.result;
  var base64Data = btoa(reader.content);
  //...
}
//extend FileReader
if (!FileReader.prototype.readAsBinaryString) {
    FileReader.prototype.readAsBinaryString = function (fileData) {
       var binary = "";
       var pt = this;
       var reader = new FileReader();      
       reader.onload = function (e) {
           var bytes = new Uint8Array(reader.result);
           var length = bytes.byteLength;
           for (var i = 0; i < length; i++) {
               binary += String.fromCharCode(bytes[i]);
           }
        //pt.result  - readonly so assign binary
        pt.content = binary;
        $(pt).trigger('onload');
    }
    reader.readAsArrayBuffer(fileData);
    }
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...