Base64转Blob下载 中文乱码
Base64转Blob下载
Base64转成Blob
- Base64通过此方法转成Blob
- dataurl有前缀,前缀可参考最下面的表格
/**
* @param {String} dataurl 传进来的要有文件格式
* @return {Blob} 返回Blob
* */
function dataURLtoBlob(dataurl) {
let arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1], //没有文件格式此处会报错
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime
});
<!-- UTF-8 乱码可加上 -->
return new Blob([u8arr], {
type: `${mime},charset=UTF-8`
});
}
下载
- 把转好的Blob以参数触发此函数下载
/**
* @param {Blob} blob
* */
function down(blob) {
const a = document.createElement('a'); //创建a标签
a.setAttribute('download', ''); // 名字
a.setAttribute('href', window.URL.createObjectURL(blob)); // href链接
a.click(); // 自执行点击事件
document.body.appendChild(a); //插入body里
document.body.removeChild(a); //从body删除
}
乱码问题
- 大多数都是格式不对
- Base64 前缀问题(格式问题),这里是常用的格式。
序列 | 前缀 | 适用格式 |
---|---|---|
1 | data:application/pdf;base64, | |
2 | data:image/png;base64, | png |
3 | data:application/x-zip-compressed;base64, | zip |
4 | data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64, | docx |
5 | data:application/json;base64, | json |
6 | data:application/vnd.ms-excel;base64, | xls |
7 | data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64, | xlsx |
8 | data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64, | pptx |
9 | data:text/plain;base64, | txt |
10 | data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64, | pptx |
11 | data:application/msword;base64, | doc |
有问题联系QQ1291481728或在下方评论,会在第一时刻处理。