关于axios下载文件的问题
下载接口的逻辑是:下载成功返回文件流(Content-Type: application/octet-stream),下载失败返回json(如:{code:'',data:'',msg:''})。
使用axios下载文件流设置responeType:'blob'就可以了。但由于上面接口的逻辑,我只能换一个思路。如下
response => {
const res = response.data
console.log(response)
let contentType = response.headers['content-type']
if(contentType === 'application/octet-stream' || contentType === 'application/x-msdownload'){
let blob = new Blob([res], {type:contentType})
console.log(blob)
let contentDispotion = response.headers['content-disposition']
let filename = '';
if(contentDispotion){
filename = contentDispotion.split('=')[1]
}
// console.log(contentDispotion, filename)
downloadBlob(blob, filename)
return response
}
if (res.code !== 0) {
问题:我把获取的文件流转换成Blob,再进行下载,发现下载后的文件异常(打开后东西消失)。设置responeType:blob下载是正常的,排查发现我手动生成的blob比通过responeType:blob直接返回Blob的size要大。不知道是什么原因?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
其实你可以换一种逻辑,设置
responeType:blob
然后在响应里判断