vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...

本文介绍了在Vue项目中如何使用Axios通过POST方式获取并下载二进制流文件,特别是处理Content-Disposition头信息的问题。详细讲解了设置responseType为“blob”,读取文件流并创建模拟下载的步骤,以及解决跨域无法获取Content-Disposition中文件名的解决方案。同时提供了完整的axios请求代码示例。
摘要由CSDN通过智能技术生成

需求

点击导出下载表格对应的excel文件

在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api

实现

第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流

responseType: "blob"

第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实现文件下载功能

let blob = res.data

let reader = new FileReader()

reader.readAsDataURL(blob)

reader.onload = (e) => {

let a = document.createElement("a")

a.download = fileName

a.href = e.target.result

document.body.appendChild(a)

a.click()

document.body.removeChild(a)

}

问题

使用 axios 会出现无法拿到 java 后端给出的 Content-Disposition 中的文件名

注意的是,浏览器中可以看到header中有信息,但是无法通过 axios 的 res.header 获取到

073c37e6f3245c494de8bfb1d35019c9.png

这种情况需要后端设置 header

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值