vue 二进制流文件导出、下载,兼容IE
this.$ajax({
method: 'GET',
url: '你的url',
headers: {
'Authorization': tokenUtil.getToken(), // 我的token
'Content-Type': "application/json;charset=utf-8"
},
responseType: 'blob', // 很重要
params: params // 请求入参
})
.then(res =>{
// console.log(res)
let headersName = '';
if(res.headers['content-disposition']) {
headersName = res.headers['content-disposition'].split('=')[1];
}
else {
headersName = '文件名称';
}
let fileName = decodeURI(headersName);
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'}); // 注意你的文件类型,我的是excel,需要什么类型文件,对应修改即可
// IE兼容
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
var a = document.createElement('a');
a.download = fileName;
a.href = URL.createObjectURL(blob);
a.setAttribute("id", "export");
document.getElementById("platform").append(a); // 修复firefox中无法触发click, platform 为我本页div 的id, 此处可直接用document.body
a.click();
document.getElementById("export").remove();
}
this.loading = false;
})
.catch(err =>{
this.loading = false;
})