Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的InvalidCharacterError:无法从base64映像转换为blob_Javascript_Node.js_Base64_Blob - Fatal编程技术网

Javascript 未捕获的InvalidCharacterError:无法从base64映像转换为blob

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

我试图将base64转换为blob,但出现错误Uncaught InvalidCharacterError:未能在“窗口”上执行“atob”:要解码的字符串编码不正确。

我在这里测试了base64图像数据,效果很好,我可以看到渲染的图像

 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,/
。它会覆盖你所有的基地。