vue 前端请求接口接收后端文件流,下载excel,百分百成功!

先说重点: 无论post还是get请求,一定要在请求方法中加上

responseType: "blob"

代码:

//先封装一个方法
 exportFile(content, customFileName, type) {
      let filename = content.filename || customFileName;
      let URL = window.URL || window.webkitURL;
      let objectUrl = URL.createObjectURL(content);
      let a = document.createElement("a");
      a.href = objectUrl;
      a.download = filename; //这步要注意 filename要写成 '文件名.xlsx'
      document.body.appendChild(a);
      a.click();
      a.remove();
  },
//请求接口,调用方法,这里用原生展示,如果是封装的axios,在url下加一个属性 responseType: "blob" 即可
axios({
    url,
    method: 'get',
    responseType: 'blob', // 必须项,axios会将文件流转为blob
}).then(res => {
    this.exportFile(res, '测试文件.xlsx') // 这是刚刚在上面封装的公共的导出方法。
})

如果不加 responseType: ‘blob’ 可能下载出来的文件只有一个undefined

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值