vue axios下载excel的blob文件流
时间: 2025-01-03 14:38:24 浏览: 10
### 使用 Vue 和 Axios 下载 Excel 文件的 Blob 数据
为了实现通过 Vue 和 Axios 下载 Excel 文件,可以按照如下方法构建代码逻辑:
在组件的方法部分定义 `exportExcel` 函数用于发起请求并处理响应的数据。当服务器返回带有二进制数据的响应时,将其转换成浏览器能够识别的 URL 并创建一个隐藏链接触发下载行为。
```javascript
exportExcel() {
this.$http.get('/api/export/excel', { // 替换成实际接口地址
responseType: 'blob' // 设置响应类型为 blob
}).then(response => {
const content = response.data;
const blob = new Blob([content], { type: "application/vnd.ms-excel;charset=utf-8" }); // 创建 Blob 对象[^1]
if (navigator.msSaveBlob) { // IE 浏览器兼容处理
navigator.msSaveBlob(blob, `data_${new Date().toISOString().slice(0, 10)}.xls`);
} else {
const url = window.URL.createObjectURL(blob); // 将 Blob 转换为可访问资源
const aLink = document.createElement('a');
aLink.style.display = 'none';
aLink.href = url;
aLink.download = `data_${new Date().toISOString().slice(0, 10)}.xlsx`; // 设定下载文件名
document.body.appendChild(aLink);
aLink.click(); // 执行点击事件以启动下载过程
window.URL.revokeObjectURL(url); // 清理临时创建的对象 URL
document.body.removeChild(aLink); // 移除辅助 DOM 元素
}
});
}
```
此段代码展示了如何利用 JavaScript 的原生特性来完成从获取到保存整个流程的操作,并且考虑到了不同浏览器之间的差异性支持情况。
阅读全文