axios配置responseType: 'blob'时,接口返回成功的数据是正常的文件流,返回失败的时候也会以文件流的形式下载到本地,但是是一个损坏的文件。
通过观察发现:有效的情况下返回的type是application/octet-stream,而失败的时候type是application/josn,那我们就根据这个条件对结果进行处理,对失败的结果转换成json,在页面给出错误提示。
处理代码如下:
正常的type为application/octet-stream时,就执行下载到本地的操作,否则页面提示
if (response.data.type === 'application/octet-stream') {
const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.click()
URL.revokeObjectURL(url) // 释放内存
} else {
// 将blo