axios 利用new FileReader() 下载文件获取返回的错误信息
this.axios({
method: "post",
url: url,
data: data,
responseType: "blob"
})
.then(res => {
const data = res.data
let r = new FileReader()
r.onload = function () {
try {
let resData = JSON.parse(this.result)
console.log(resData)
if (resData && resData['code'] && resData['code'] != '1000') {
alert(resData.msg);//弹出返回的错误msg
}
} catch (err) {
let fileName = '下载文件名.xls'
// 兼容ie11
if (window.navigator.msSaveOrOpenBlob) {
try {
const blobObject = new Blob([data])
window.navigator.msSaveOrOpenBlob(blobObject, fileName)
} catch (e) {
console.log(e)
}
return
}
this.download(data, fileName)
alert('导出成功')
}
}
r.readAsText(data) // FileReader的API
})
.catch(e => {
let msg = "网络异常";
_that.isCanClick = true
this.$Message.error(msg);
});
// 下载文件
download(data, name) {
if (!data) {
return;
}
let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.setAttribute("download", name);
document.body.appendChild(link);
link.click();
},