readAsBinaryString 兼容IE11

Myth丶恋晨 2021-11-11 02:08 568阅读 0赞

readAsBinaryString api:

https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsBinaryString

注意:

该特性是非标准的,请尽量不要在生产环境中使用它!

经过测试:ie11浏览器不支持,chrome等是支持的。

解决方案1:

  1. 使用:
  2. readAsArrayBuffer
  3. 然后:
  4. function arrayBufferToString(buffer) {
  5. var array = new Uint8Array(buffer);
  6. return binaryToString(String.fromCharCode.apply(null, Array.prototype.slice.apply(array)));
  7. }

该访问问题:如果buffer比较大,那么ie11可能出现堆栈溢出。

解决方案2:自定义

  1. readAsBinaryString
  2. if (r.readAsBinaryString === undefined) {
  3. FileReader.prototype.readAsBinaryString = function (fileData) { //解决ie11 大文件堆栈溢出的问题(for arrayBufferToString)
  4. var binary = "";
  5. var pt = this;
  6. var reader = new FileReader();
  7. reader.onload = function (e) {
  8. var bytes = new Uint8Array(reader.result);
  9. var length = bytes.byteLength;
  10. for (var i = 0; i < length; i++) {
  11. binary += String.fromCharCode(bytes[i]);
  12. }
  13. pt.content = binary;
  14. //console.log("binary length:" + binary.length);
  15. pt.onload(pt); //页面内data取pt.content文件内容
  16. }
  17. reader.readAsArrayBuffer(fileData);
  18. }
  19. }

  

转载于:https://www.cnblogs.com/badprogrammer/p/10728024.html

发表评论

表情:
评论列表 (有 0 条评论,568人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IE11的CSS兼容性问题

    最近测试给了我一大堆BUG,一瞅发现全是IE11的。吐槽一下这个浏览器真的比较特立独行。很多默认的样式跟别的浏览器不同,而且最明显的一点应该是padding左右内边距往往比别的

    相关 IE11兼容console.info

    问题描述: 在代码中使用了console.info(),打开控制台一切正常,关闭控制台代码不执行 原因: console.info()是需要打开一次控制台才能

    相关 IE11兼容

    最近在做一个项目的时候,发现如下IE11兼容性问题: (1)js中不支持使用模板字符串(反引号); (2)new ActiveXObject只能在IE下使用,谷歌浏览器下不