错误因为atob解码失败
这种base64和常见的编码不同需要decodeURIComponent转译
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,'文件名');