之前做的下载文件并兼容IE,当时搜了好几篇博客,才写出来。现在拿出来分享下,希望能够直接帮到大家,欢迎指正问题~
let param = {
projectId,
}
let url = '/xxx/xxx';
axios.post(url,param,{responseType: 'blob'})
.then((response) => {
let res = response.data;
if (res["content-type"] && res["content-type"].indexOf('application/json') !== -1) {
let reader = new FileReader();
reader.readAsText(res, 'utf-8');
reader.onload = function (e) {
let data = JSON.parse(reader.result); //e.target.result也可
if(data.msg){
message.error(data.msg);
}
}
}else{
let blob = new Blob([response.data])
let downloadElement = document.createElement('a');
let href = window.URL.createObjectURL(blob); //创建下载的链接
let fileName = response.headers["content-disposition"].split(";")[1].split("filename=")[1];
if (isIE) {
window.navigator.msSaveBlob(blob, fileName);
} else {
downloadElement.href = href;
downloadElement.download = fileName; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
}
})
.catch((err) => {
console.error(err)
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。