/**
* 导出文件
* @param {*} data 接口返回数据
* @param {*} title 下载文件名
*/
exportFile(data,title){
return new Promise((resolve,reject)=>{
let type = data.type
if (type.includes('application/json')) {
let reader = new FileReader()
reader.readAsText(data)
reader.onload = function (event) {
let content = reader.result
let message = JSON.parse(content) // 错误信息
reject(message)
}
}else{
const blob = new Blob([data])
const fileName = title
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, fileName)
}
resolve()
}
})
}
// 使用
exportFile(res,a.xlsx).then((res)=>{
// 成功的回调
}).catch((err)=>{
// 失败的回调
})
关于axios请求下载文件处理逻辑
最新推荐文章于 2024-08-29 09:15:33 发布
本文介绍了一个JavaScript函数,用于异步导出文件,根据不同文件类型(如JSON或二进制数据)进行处理。通过FileReader解析JSON,而在非IE浏览器中利用`download`属性实现文件下载。
摘要由CSDN通过智能技术生成