在导出文件的时候,responseType为blob的请求,请求成功返回二进制流,那么返回失败,如何获取错误信息来提示错误信息。
下面的是经测可用的,用返回的type来做判断,来区分是返回的二进制流还是json串。
...
.then(res => {
let reader = new FileReader()
reader.readAsText(res)
reader.onload = () => {
if (res.type === 'application/json') {
let resData = JSON.parse(reader.result)
if (resData.code) {
this.$message.error(resData.msg)
}
} else {
let blob = new Blob([res], {type: 'application/vnd.ms-excel'})
const dateTime = Date.parse(new Date())
const fileName = `名字_${dateTime}.xlsx`
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
} else { // IE10+下载
navigator.msSaveBlob(blob)
}
}
}
})