axios获取后端返回字节流

responseType: ‘blob’。首先将这个responseType改为”blob“。即将返回值视为二进制

this.$http({
    url: this.$http.adornUrl("/getCert"),
    method: "post",
    data: this.certForm,
    responseType: 'blob'
})

将返回值res.data作为flow

创建一个Blob对象,通过该对象创建一个ObjectURL。

创建一个不可见的Html元素,将blobURL赋给该元素,然后模拟点击。

const blob = new Blob([flow])
const blobUrl = window.URL.createObjectURL(blob)

const a = document.createElement('a')
a.style.display = 'none'
var nowDate = new Date();
let date = nowDate.getFullYear()+'-'+(nowDate.getMonth() + 1)+'-'+nowDate.getDate()
// 自定义下载的文件名
a.download = this.certForm.username+this.certForm.org+date+'证书列表.xlsx' 
a.href = blobUrl
a.click()

完整的代码为

 this.$http({
        url: this.$http.adornUrl("/getCert"),
        method: "post",
        data: this.certForm,
        responseType: 'blob'
    }).then((res)=>{
        console.log(res)
        this.loading = false
        //返回的res是后端真正返回的res.data
        this.downloadFn(res.data)
        // flow为接口返回的文件流]
    }).catch((e)=>{`在这里插入代码片`
        this.$message({
            type: 'error',
            message: e
        });
        this.loading = false
    })
},
downloadFn(flow = null) {
    if (!flow) return
    const blob = new Blob([flow])
    const blobUrl = window.URL.createObjectURL(blob)

    const a = document.createElement('a')
    a.style.display = 'none'
    var nowDate = new Date();
    let date = nowDate.getFullYear()+'-'+(nowDate.getMonth() + 1)+'-'+nowDate.getDate()
    a.download = this.certForm.username+this.certForm.org+date+'证书列表.xlsx' // 自定义下载的文件名
    a.href = blobUrl
    a.click()
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值