后端传过来一个文件流,前端使用vue实现下载功能
时间: 2024-05-09 13:17:23 浏览: 155
在前端使用vue实现下载功能,可以通过以下步骤:
1. 在vue组件中定义一个方法,用于下载文件:
```
downloadFile() {
// 向后端发送请求获取文件流
axios.get('/api/download', {
responseType: 'blob' // 指定返回类型为二进制流
}).then(response => {
// 创建一个a标签,用于下载文件
let url = window.URL.createObjectURL(new Blob([response.data]));
let link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.setAttribute('download', 'file.pdf');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
}
```
2. 在模板中添加一个按钮,用于触发下载操作:
```
<template>
<div>
<button @click="downloadFile">下载文件</button>
</div>
</template>
```
3. 在vue组件中引入axios库,用于发送请求:
```
import axios from 'axios';
```
4. 在后端中实现下载接口,将文件流作为响应体返回给前端:
```
app.get('/api/download', function(req, res) {
// 从文件系统中读取文件流
let fileStream = fs.createReadStream('file.pdf');
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=file.pdf');
fileStream.pipe(res);
});
```
阅读全文