在前端项目中,正常下载文件可以通过请求后台接口用blob的格式获取数据量进行下载,或者直接访问对应链接下载,但有时候因为一些原因前端返回的数据是base64字符串。这时候我们要下载的话就需要将base64字符串转换成blob文件流。下面是转换的相关代码:
// base64转换blob
const base64ToArrayBuffer = (base64) => {
var bloBString = window.atob(base64);
var bloBLen = bloBString .length;
var bytes = new Uint8Array(bloBLen);
for (var i = 0; i < bloBLen; i++) {
var ascii = bloBString .charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
};
转换成功后,我们只需要将转换的数据流进行下载即可
// 创建a标签
const link = document.createElement("a");
// 获取数据量
const blob = new Blob([base64ToArrayBuffer('base64数据')]);
// 下载文件
const objectUrl = URL.createObjectURL(blob);
link.href = objectUrl;
link.setAttribute("download", '文件名称');
link.click();
URL.revokeObjectURL(objectUrl);