vue3 下载 responseType为stream 的压缩包
时间: 2024-09-29 13:08:37 浏览: 30
VUE 修复MOCKJS ResponseType BUG
在 Vue3 中下载一个 responseType 为 "stream" 的压缩文件(如 .zip 或者 .rar),你可以使用 Axios 库配合 Fetch API 来实现。以下是一个示例代码片段:
```javascript
import axios from 'axios';
async function downloadCompressedFile(url) {
try {
const response = await axios.get(url, { responseType: 'blob' }); // 使用 blob 类型响应
// 创建一个可读流
const reader = new FileReader();
reader.onloadend = async () => {
const blobData = reader.result;
// 将 Blob 转换为 Download URL
const urlToDownload = window.URL.createObjectURL(blobData);
// 创建并触发点击事件模拟用户下载
const aLink = document.createElement('a');
aLink.href = urlToDownload;
aLink.download = 'compressed-file.zip'; // 自定义下载名称
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); // 下载完成移除链接
};
reader.readAsArrayBuffer(response.data); // 开始读取数据
} catch (error) {
console.error('Failed to download file:', error);
}
}
// 调用函数并传入压缩文件地址
downloadCompressedFile('http://example.com/compressed.zip');
```
阅读全文