vue下载文件并更改文件名
时间: 2023-08-12 12:06:03 浏览: 178
你可以使用 Vue.js 的 axios 库来下载文件,并通过修改 `Content-Disposition` 头部来更改文件名。下面是一个示例代码:
```javascript
// 导入axios库
import axios from 'axios';
// 定义下载文件的函数
function downloadFile(url, filename) {
axios({
url: url,
method: 'GET',
responseType: 'blob' // 设置响应类型为blob
}).then(response => {
const blob = new Blob([response.data]);
if (typeof window.navigator.msSaveBlob !== 'undefined') {
// 兼容IE,使用msSaveBlob方法进行下载
window.navigator.msSaveBlob(blob, filename);
} else {
// 创建一个临时的URL对象,并指定下载文件的名称
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
// 模拟点击下载链接
link.click();
// 释放临时的URL对象
window.URL.revokeObjectURL(url);
}
});
}
// 调用下载文件的函数
downloadFile('http://example.com/file.pdf', 'newfilename.pdf');
```
在上面的代码中,我们首先导入了 axios 库,然后定义了一个名为 `downloadFile` 的函数。该函数接受两个参数:文件的 URL 和要更改的文件名。
在函数内部,我们使用 axios 发起 GET 请求,设置响应类型为 `blob`,以便获取文件的二进制数据。然后,我们创建一个 `Blob` 对象,并根据浏览器支持情况使用不同的方法进行文件下载。
如果浏览器支持 `msSaveBlob` 方法(如IE),我们使用该方法进行下载。否则,我们创建一个临时的 URL 对象,并将其赋值给一个新创建的 `<a>` 元素的 `href` 属性。然后设置 `download` 属性为要更改的文件名,并模拟点击链接进行下载。
最后,我们释放临时的 URL 对象,以便在下载完成后清理资源。
你可以根据自己的需求调整代码中的 URL 和文件名,以适配你的应用。
阅读全文