gz、zip等压缩文件postman成功下载但是前端项目中下载解压失败
原因:
- axios的配置错误和版本过低
- 错误的前端代码尝试通过
axios.post()
下载文件,但未正确设置responseType
和Content-Type
- 解决方案:更新axios版本并调整axios请求方式,确保responseType为’arraybuffer’
const raw = JSON.stringify({
//查询参数
})
axios({
method: 'post',
url: `请求链接`,
data: raw,
responseType: 'arraybuffer', //1、注意:responseType arraybuffer
headers: {
'Content-Type': 'application/json; application/octet-stream', //2、注意Content-Type其他的
Authorization:
'Bearer xxxx'
}
}).then(function (data) {
console.log(data)
const blob = new Blob([data.data], { type: 'application/gzip' }) //'application/zip'
const downloadUrl = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = downloadUrl
link.setAttribute('download', 'file.gz') //file.zip
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
window.URL.revokeObjectURL(downloadUrl) //释放blob对象
})