vue 附件下载, blob格式怎么拿到后端返回的文件名称等数据
时间: 2024-09-14 17:06:35 浏览: 76
在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);
});
```
阅读全文