首页 > 解决方案 > 将图像更改为 Blob 在 IE11 中不起作用

问题描述

使用以下代码将图像更改为 blob。

changeImageIntoBlob = getImageResponse => {
 var urlCreator = window.URL || window.webkitURL;
 var binaryData = [];
 binaryData.push(getImageResponse);
 var image = urlCreator.createObjectURL(
   new Blob(binaryData, { type: "jpeg/png" })
 );

 this.setState({
   image
 });
};

在上面的代码中 getImageResponse 参数应该是这样的

Blob {size: 144425, type: "image/jpeg"}

它在 chrome、firefox 和 EDGE 中运行良好,但这个现在在 IE11 中运行,IE 中发生的错误是InvalidStateError并且还在下图中添加了错误供您参考。

IE11面临的错误

帮我弄清楚。

标签: javascriptreactjs

解决方案


您可以尝试使用此功能。我不确定你的getImageResponse. 如果它是一个 dataURI,像这样

data:image/jpeg;base64,R0lGODlhEAAQAMQAAORHHOV....

然后你可以试试这个

dataURItoBlob(dataURI) {
      var byteString = atob(dataURI.split(",")[1]);
      var ab = new ArrayBuffer(byteString.length);
      var ia = new Uint8Array(ab);
      for (var i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
      }
      return new Blob([ab], { type: "image/jpeg" }); // change the type here into the type you want
    },

推荐阅读