将 blob 转换为 base64

2022-08-30 00:36:06

这是我想对字符串执行的代码片段:BlobBase64

这个注释的部分工作正常,当由此生成的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);

问题在于下面的代码,生成的源变量为 null

更新:

有没有更简单的方法来做到这一点与JQuery,以便能够从Blob文件创建Base64字符串,如上面的代码所示?


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

文档编码形式形成 base64readAsDataURL

作为一个功能: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。


答案 2

这对我有用:

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);
};