vue项目怎么通过按钮直接请求http下载文件服务器的文件
时间: 2024-01-28 11:04:50 浏览: 91
你可以使用 axios 库来发送 HTTP 请求并下载文件。首先,在 vue 组件中引入 axios 库:
```javascript
import axios from 'axios';
```
接下来,你可以使用 axios 创建一个下载文件的函数:
```javascript
downloadFile() {
axios({
url: 'http://your-download-url.com/your-file.pdf',
method: 'GET',
responseType: 'blob', // Important
}).then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'your-file.pdf');
document.body.appendChild(link);
link.click();
});
},
```
这个函数会发送一个 GET 请求到指定的下载链接,将响应类型设置为 `blob`(二进制数据),接着将响应数据作为一个 Blob 对象传递给 createObjectURL() 方法来生成一个下载链接,然后通过创建一个 `<a>` 标签并设置 download 属性来触发下载。你可以在按钮的点击事件中调用这个函数来实现文件下载:
```html
<template>
<div>
<button @click="downloadFile">Download File</button>
</div>
</template>
```
注意,这个方法只适用于下载小文件,如果要下载大文件,最好使用流式传输(streaming)的方式下载并分块处理。
阅读全文