【问题标题】:Blob to Base64 in javascript在 JavaScript 中将 Blob 转换为 Base64
【发布时间】:2018-10-07 09:29:17
【问题描述】:

我已成功将我的 base64 (DATA_URI) 图像转换为 blob,但无法将其还原。

我的 base64 到 blob 代码如下所示,更多信息请看link

b64toBlob(b64Data, contentType, sliceSize) {
    contentType = contentType || '';
    sliceSize = sliceSize || 512;

    var byteCharacters = atob(b64Data);
    var byteArrays = [];

    for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
        var slice = byteCharacters.slice(offset, offset + sliceSize);

        var byteNumbers = new Array(slice.length);
        for (var i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
        }

        var byteArray = new Uint8Array(byteNumbers);

        byteArrays.push(byteArray);
    }

    var blob = new Blob(byteArrays, {type: contentType});
    return blob;
}

我正在尝试将我的 blob 转换为 base64,但出现错误

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

这是我取回我的 blob 图像资源的回复

我正在调用成功回调,但无法理解这一点

这是我尝试将 blob 转换为 base64 的代码

if(window.FileReader) {
          var reader = new FileReader();
          reader.readAsDataURL(blob); 
          reader.onloadend = () => {
              var base64data = reader.result;                
              console.log(base64data);
          }
        }

调试时我看不到 reader.onloadend 它为空,我无法调用它。

有什么帮助吗??

【问题讨论】:

  • 如何构造要传递给reader.readAsDataURL()blob
  • 如果您手头只有字符串"1524751188817_blob",我不确定您能否从中得到Blob。您正在使用的函数b64toBlob 期望第一个参数是base64 编码的字符串。
  • @haim770 实际上这是错误的,其中我提到作为字符串数组的 blob 实际结果显示文件类似于 ØÿàJFIFHHÿáXExifMM*‡i&amp;  À Ðÿí8Photoshop 3.08BIM8BIM%ÔŒÙ²é€ ˜ìøB~ÿÀÐÀ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br,....
  • 我得到了我的 Api 响应,因为 _body 给了我一些类似 streemed 数据的 blob/文件字符串

标签: javascript angularjs base64 ionic3 blob


【解决方案1】:

我相信您需要在开始读取数据之前定义onloadend。在您分配它之前,它可能会完成读取并触发 null 函数。或者更准确地说,在你打电话给readAsDataURL 的那一刻,onloadend 就是null

var reader = new FileReader();
reader.onloadend = () => {
  var base64data = reader.result;                
      console.log(base64data);
}

reader.readAsDataURL(blob); 

【讨论】:

  • 你能详细说明你的答案吗?我是处理文件的新手
  • 还是同样的问题
猜你喜欢
  • 2015-03-14
  • 2013-09-10
  • 2013-07-29
  • 2017-11-21
  • 2015-01-31
  • 2021-07-27
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多