1.当接口返回的数据为二进制流时:
方法一
exportHistory().then(res=>{
//res.data为后端返回的二进制流
let blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'})
let url = window.URL.createObjectURL(blob)
let a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = '文件名1'; //命名下载名称
a.click(); //点击触发下载
window.URL.revokeObjectURL(url); //下载完成进行释放
})
方法二
export const downloadFileBlob = (path, name) => {
const xhr = new XMLHttpRequest();
xhr.open('get', path);
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// 如果是IE10及以上,不支持download属性,采用msSaveOrOpenBlob方法,但是IE10以下也不支持msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
navigator.msSaveOrOpenBlob(this.response, name);
return;
}
const url = URL.createObjectURL(this.response);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = name;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
};
};
使用
import { downloadFileBlob } from '@/utils/download.js'
downloadFileBlob(res, '文件111')
2.当接口返回的数据为下载或导出地址时:
window.location.href=data; //data为后端返回的下载地址
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。