这是我想要对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字符串呢?
发布于 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。
发布于 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);
};
发布于 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);
});
https://stackoverflow.com/questions/18650168
复制相似问题