由于项目中采用了token验证,用A标签跳转下载的做法就不再可行了
所以:
1.axios设置
responseType: 'blob',
2. axios 响应
const type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' //excel文件
const type='application/zip'//ZIP文件
const blob = new Blob([response.data], { type: type })
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
//后台再header中传文件名
const name = decodeURI(response.headers['content-disposition'].split('=')[1])
downloadElement.href = href
downloadElement.download = name
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
注意:
后端返回相应的请求头
Content-Type: application/octet-stream(下载用的流)