前提:
responseType:'blob'
/**
* 下载文件方法
* @param {*} param0
* api: 接口
* payload: 接口的入参
* fileName: 导出的文件命名
*/
export const blobDownload = ({ api, payload, fileName = '' }) => {
let blob = null
return http(api, payload).then(res => {
// 此处res里必须能取得到header
fileName = fileName || decodeURI(res.headers['content-disposition'].split(';')[1].split('"')[1])
if (!window.navigator.msSaveOrOpenBlob) {
blob = new Blob([res.data])
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)
document.body.removeChild(elink)
} else {
window.navigator.msSaveOrOpenBlob(blob, fileName)
}
})
}