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或在下方评论,会在第一时刻处理。

浙公网安备 33010602011771号