error because atob decoding failed
This base64 is different from common encodings and requires decodeURIComponent translation
function base64toBlob(url, isSvg) {
// return new Blob([u8arr],{type: mime});
// // return new File([u8arr], `${filename}`, {
// // type: mime,
// // });
let parts = url.split(","); // data:[<mime type>][;charset=<charset>][;base64],<encoded data>
let mime = parts [0].match(/:(.*?);/)[1];
let base64Encoded = parts[0].indexOf("base64") > -1;
let bstr =isSvg)? decodeURIComponent(parts[1]):parts[1];
// svg的base64atob函数会解码失败需要使用decodeURIComponent转译
base64Encoded && (bstr = window.atob(bstr));
var n = bstr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr],{type: mime});
}
const blob = base64toFile(ImgBase64,true);
function base64toFile(url, isSvg,filename) {
let parts = url.split(","); // data:[<mime type>][;charset=<charset>][;base64],<encoded data>
let mime = parts [0].match(/:(.*?);/)[1];
let base64Encoded = parts[0].indexOf("base64") > -1;
let bstr =isSvg)? decodeURIComponent(parts[1]):parts[1];
// svg的base64atob函数会解码失败需要使用decodeURIComponent转译
base64Encoded && (bstr = window.atob(bstr));
var n = bstr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], `${filename}`, {
type: mime,
});
}
const file= base64toFile(ImgBase64,true,'文件名');