一般分为两种情况:1、后端返回blob数据流。2、后端返回base64字节
1、blob数据流
可以直接用a标签模拟点击事件直接下载
const fileName = 'test.jpg';
const blob = new Blob([xxx]);
const blobUrl = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = blobUrl;
a.download = fileName;
a.click();
//释放之前通过调用URL.createObjectURL()创建的对象
window.URL.revokeObjectURL(blobUrl);
备注:由于 Blob
接口的生命周期问题及潜在的内存泄漏风险,此方法在 Service Worker 中不*可用。
2、base64字节
//1、采用atob的方法函数会对经过 Base64编码的字符串进行解码
atob(encodedData)
//1、先base64转成blob流
new Blob([res],{
type: "application/json",
})
//2、模拟a标签点击事件下载