直接贴代码
data是文件流的数据, name是文件名
download (data, name) {
if (!data) {
return
}
let blob = new Blob([data], { type: 'application/octet-stream' }) // 将文件流放到blob对象里面
let url = window.URL.createObjectURL(blob) // 创建url 地址为blob对象
let alink = document.createElement("a");
alink.href = url;
alink.download = name; //文件名
alink.click();
}```
base64转成文件流
直接贴代码```
dataURLtoFile(dataurl, filename) { //将base64转换为文件
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1], // 拿到文件的类型
bstr = atob(arr[1]), //atob方法将base64字符串转换为binary文件流数据
n = bstr.length,
u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n); // 将文件流转换成Unicode编码 返回值是0 - 65535之间的整数
}
return new File([u8arr], filename, {type:mime}); // 第一个参数是转换好的Unicode编码
}