vue 图片下载,下载后端接口返回的blob类型的文件(图片)

这段代码展示了如何使用一个名为downloadQrcode的函数来调用接口下载二维码。通过设置请求方法为GET,响应类型为blob,并处理返回的数据创建一个可下载的PNG图片链接。最后,通过创建HTML的a标签模拟点击下载,并释放内存中的URL。
摘要由CSDN通过智能技术生成

参考:https://www.jianshu.com/p/cda41dd5a3df

export function downloadQrcode(params) {
  return request({
    url: '/multiplayer-draw/download-qrcode',
    method: 'get',
    // headers: { 'Content-Type': 'image/png; charset=UTF-8' }, //此行可以省略
    responseType: 'blob',		// response类型
    params
  })
}
 downloadQrcode({id: this.id}).then(res => {
   var a = document.createElement('a')
   document.body.appendChild(a)
   a.style = 'display: none'
   let blob = new Blob([res], {
     type: "image/png",
   }); 
   let url = window.URL.createObjectURL(blob); 
   a.href =  url
   a.download = '二维码'
   a.click()
   a.remove()
   window.URL.revokeObjectURL(url) // 释放url
 })

接口返回数据:
在这里插入图片描述

Vue中实现附件下载,并获取后端返回文件名称以及其他可能的数据,通常会涉及到以下几个步骤: 1. **后端设置**: 后端需要设置正确的HTTP响应头来告知浏览器这是一个附件下载请求。具体来说,需要设置`Content-Disposition`头部,其中可以指定文件名,例如`Content-Disposition: attachment; filename="example.pdf"`。同时,后端应将文件内容以Blob对象的形式返回,设置`Content-Type`为文件的MIME类型,如`application/pdf`。 2. **前端请求**: 在Vue中,可以通过`axios`或者原生的`fetch` API来发送请求获取Blob数据。确保请求的响应类型设置为`blob`。 3. **下载文件命名**: 获取到Blob数据后,可以使用`URL.createObjectURL`创建一个可以用于下载的URL。然后,可以通过创建一个`<a>`标签并设置其`href`属性为该URL,并使用`download`属性指定下载文件的名称来触发下载。 4. **获取文件名等信息**: 如果后端返回了其他信息,比如文件名,那么这些信息通常会以JSON格式包含在响应体中。可以通过解析响应数据来获取这些信息。 以下是一个简单的示例代码: ```javascript // 发起请求获取Blob数据 axios({ url: '你的后端接口地址', method: 'GET', responseType: 'blob', // 重要:确保设置responseType为blob }) .then(response => { // 获取文件名等信息,假设这是从后端返回的数据中解析出的文件名 const filename = response.headers['content-disposition'].split('filename=')[1]; // 创建一个a标签用于下载 const link = document.createElement('a'); link.href = URL.createObjectURL(response.data); // 创建下载链接 link.download = filename; // 设置下载文件名 // 触发下载 document.body.appendChild(link); link.click(); // 下载完成后移除元素 document.body.removeChild(link); }) .catch(error => { console.error('下载出错:', error); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值