之前做的下载文件并兼容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) });