后端返回图片的文件流,前端实现直接下载

首先需要设置响应类型为blob

axios({
  method: 'GET',
  url: '/xxx',
  params: xxx,
  responseType: 'blob',
})

具体下载代码

let result = await axios({
  method: 'GET',
  url: '/xxx',
  params: xxx,
  responseType: 'blob',
})
const a = document.createElement('a')
a.download = '下载图片.jpg'
a.style.display = 'none'
a.href = URL.createObjectURL(result)
document.body.appendChild(a)
a.click()
// 下载完将元素对象移除
URL.revokeObjectURL(a.href)
document.body.removeChild(a)

涉及到的内容

URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的 URL,这个新的 URL 对象表示指定的 File 对象或 Blob 对象。
使用方法: objectURL = URL.createObjectURL(object);

URL.revokeObjectURL():
在每次调用 createObjectURL() 方法时,都会创建一个新的 URL 对象,即使你已经用相同的对象作为参数创建过。当不再需要这些 URL 对象时,每个对象必须通过调用 URL.revokeObjectURL() 方法来释放。
在这里插入图片描述

更多关于URL对象的信息请参考: https://developer.mozilla.org/zh-CN/docs/Web/API/URL

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值