如何将 Blob 转换为 Base64 ?

这是我想要将 Blob 转换为 Base64 字符串的代码片段:

此注释部分有效,并且当由此生成的 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);

问题在于最后一行的代码,生成的 source 变量为空

更新:

有没有更简单的方法可以使用 JQuery 从 Blob 文件创建 Base64 字符串,如上面的代码所示?

原文由 quarks 发布,翻译遵循 CC BY-SA 4.0 许可协议
阅读 2.7k
2 个回答
var reader = new FileReader();
 reader.readAsDataURL(blob);
 reader.onloadend = function() {
 var base64data = reader.result;
 console.log(base64data);
 }

文档 readAsDataURL 编码为base64

作为一个可 await 的功能:

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

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

原文由 Arun Killu 发布,翻译遵循 CC BY-SA 4.0 许可协议

我是这样做的,有效:

 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);
};
原文由 yeahdixon 发布,翻译遵循 CC BY-SA 4.0 许可协议
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题