首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将blob转换为base64

将blob转换为base64
EN

Stack Overflow用户
提问于 2013-09-06 12:55:22
回答 12查看 321.2K关注 0票数 214

这是我想要对Base64字符串执行Blob操作的代码片段:

这个注释部分可以工作,并且当由此生成的URL设置为img src时,它会显示图像:

var blob = items[i].getAsFile();
//var URLObj = window.URL || window.webkitURL;
//var source = URLObj.createObjectURL(blob);
//console.log("image source=" + source);

var reader = new FileReader();
reader.onload = function(event){
console.log(event.target.result)
}; // data url!
var source = reader.readAsBinaryString(blob);

问题出在下面的代码中,生成的源变量为空

更新:

有没有更简单的方法可以像上面的代码一样从JQuery文件中创建Base64字符串呢?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2013-09-06 13:05:01

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

docs readAsDataURL编码格式转换为base64

作为一个支持await的函数:

function blobToBase64(blob) {
  return new Promise((resolve, _) => {
    const reader = new FileReader();
    reader.onloadend = () => resolve(reader.result);
    reader.readAsDataURL(blob);
  });
}

注意:blob的结果不能直接解码为Base64,除非首先删除base64编码数据之前的Data-URL声明。要仅检索Base64编码的字符串,请首先从结果中删除data:/;base64。

票数 399
EN

Stack Overflow用户

发布于 2016-10-28 00:19:07

这对我很有效:

var blobToBase64 = function(blob, callback) {
    var reader = new FileReader();
    reader.onload = function() {
        var dataUrl = reader.result;
        var base64 = dataUrl.split(',')[1];
        callback(base64);
    };
    reader.readAsDataURL(blob);
};
票数 43
EN

Stack Overflow用户

发布于 2020-04-15 18:06:28

有一种不依赖于任何堆栈的纯JavaSript方式:

const blobToBase64 = blob => {
  const reader = new FileReader();
  reader.readAsDataURL(blob);
  return new Promise(resolve => {
    reader.onloadend = () => {
      resolve(reader.result);
    };
  });
};

为了使用这个辅助函数,你应该设置一个回调,例如:

blobToBase64(blobData).then(res => {
  // do what you wanna do
  console.log(res); // res is base64 now
});

我在React Native项目中为我的问题编写了这个辅助函数,我想下载一个图像,然后将其存储为缓存图像:

fetch(imageAddressAsStringValue)
  .then(res => res.blob())
  .then(blobToBase64)
  .then(finalResult => { 
    storeOnMyLocalDatabase(finalResult);
  });
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18650168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档