最近做導出excel功能淮阐,后端返回文件流叮阅,前端vue導出excel打開失敗,但是用postman測試可以正常打開泣特。
// 前端演示代碼
// 問題的原因就是responseType浩姥,一定要加上!W茨勒叠!
// 問題的原因就是responseType,一定要加上8嗝稀C蟹帧!
// 問題的原因就是responseType柒桑,一定要加上1拙觥!魁淳!
axios.post("/download/url", {
params,
responseType:"arraybuffer" // 或者blob,GET請求用blob丢氢?傅联?有待考證
}).then(res=>{
// 這里的type最好參考Response Headers里面的content-type,有可能是application/vnd.ms-excel
let blob = new Blob([res.data], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8'
})
// 獲取文件名疚察,根據(jù)自己需要的分割
let fileName = res.headers['content-disposition'].split(';')[1].split("=")[1]
let a = document.createElement('a')
let url = window.URL.createObjectURL(blob)
a.href = url
a.download = fileName
document.body.appendChild(a)
a.style.display = 'none'
a.click()
document.body.removeChild(a)
window.URL.revokeObjectURL(url)
})