vue下载后端返回文件流数据怎么操作? handleExportToExcel() { let param = { version: Number(this.queryParams.projectPlanVersionId), format: 'xlsx' } exportProject(param).then(res => { this.$message({ message: '操作成功', type: 'success' }); }) },
时间: 2024-04-22 18:24:10 浏览: 114
在Vue中下载后端返回的文件流数据的操作步骤如下:
1. 创建一个方法 `handleExportToExcel()`,该方法将处理下载操作。
2. 定义一个变量 `param`,其中包含您需要发送给后端的参数。根据您的代码,`queryParams.projectPlanVersionId` 是用于指定版本号的参数,`format` 是用于指定文件格式的参数。
3. 使用适当的方式(例如axios或fetch)发送带有参数的HTTP请求到后端。假设您使用axios,您可以这样发送请求:
```javascript
import axios from 'axios';
handleExportToExcel() {
let param = {
version: Number(this.queryParams.projectPlanVersionId),
format: 'xlsx'
};
axios({
url: '/api/exportProject',
method: 'GET',
responseType: 'blob',
params: param
}).then(response => {
// 处理成功响应
this.downloadFile(response.data);
}).catch(error => {
// 处理错误
console.error(error);
});
},
```
在这个例子中,我们使用 `GET` 请求发送参数,并将 `responseType` 设置为 `blob`,以便正确处理二进制数据。
4. 在成功响应中,调用一个名为 `downloadFile()` 的自定义方法来处理下载文件。我们将在下一步中实现这个方法。
5. 实现 `downloadFile()` 方法,用于创建下载链接并触发文件下载:
```javascript
downloadFile(data) {
const blob = new Blob([data], { type: 'application/octet-stream' });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'filename.xlsx');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
```
在这个方法中,我们创建了一个Blob对象,并使用URL.createObjectURL()方法生成URL。然后,我们创建一个`<a>`元素,并设置`href`属性为URL,`download`属性为要保存的文件名。最后,我们将该`<a>`元素添加到文档的`<body>`中,模拟用户点击下载链接,并在下载完成后从文档中删除该链接。
这样,当您调用`handleExportToExcel()`方法时,将会触发文件的下载操作,并将文件命名为"filename.xlsx"。请注意,您需要根据实际情况调整URL和文件名。
希望这可以帮助到您!
阅读全文