前端使用arraybuffer导出文本流,成功与失败格式不一样,当成功时是文本流,失败时是json
const tempBlob = new Blob([ res.data ], { type: 'application/json' })
// 通过 FileReader 读取这个 blob
const reader = new FileReader()
reader.onload = e => {
const res1 = e.target.result
// 此处对fileReader读出的结果进行JSON解析
// 可能会出现错误,需要进行捕获
try {
const json = JSON.parse(res1)
} catch (err) {
// 该异常为无法将字符串转为json
// 说明返回的数据是一个流文件
// 不需要处理该异常,只需要捕获即刻
const link = document.createElement('a')
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.download = 'xx.xls'
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
}
// 将blob对象以文本的方式读出,读出完成后将会执行 onl oad 方法
reader.readAsText(tempBlob)