Javascript 未捕获的InvalidCharacterError:无法从base64映像转换为blob
我试图将base64转换为blob,但出现错误Uncaught InvalidCharacterError:未能在“窗口”上执行“atob”:要解码的字符串编码不正确。 我在这里测试了base64图像数据,效果很好,我可以看到渲染的图像Javascript 未捕获的InvalidCharacterError:无法从base64映像转换为blob,javascript,node.js,base64,blob,Javascript,Node.js,Base64,Blob,我试图将base64转换为blob,但出现错误Uncaught InvalidCharacterError:未能在“窗口”上执行“atob”:要解码的字符串编码不正确。 我在这里测试了base64图像数据,效果很好,我可以看到渲染的图像 function b64toBlob(b64Data, contentType, sliceSize) { contentType = contentType || ''; sliceSize = sliceSi
function 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;
}
var blob = b64toBlob(base64Data, 'image/jpeg');
console.log(blob)
函数b64toBlob(b64Data、contentType、sliceSize){
contentType=contentType | |“”;
切片大小=切片大小| | 512;
var byteCharacters=atob(b64Data);
var ByteArray=[];
对于(变量偏移量=0;偏移量
发生的事情是您保留了
数据:image/jpeg;base64,
在base64数据的字符串中。您需要删除它,只保留实际上是base64编码的字符串,这样它才能工作
换句话说,
var base64Data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ' // truncated
变成
var base64Data = '/9j/4AAQSkZJRgABAQ' // truncated
var base64ImageContent=base64。替换(/^data:image\/(png | jpg);base64,/,“”);为什么这样不行?因为它应该是(png | jpg | jpeg)
会像gif一样吗?我的意思是,如果你真的想,只需执行正则表达式/data:\w+\/\w+;base64,/
。它会覆盖你所有的基地。