前端使用axios下载后端返回的二进制Excel文件
作者:后端茶话时间:2026-10-22 16:24:39浏览:638
本文介绍如何通过axios从后端接口下载Excel文件。当后端返回二进制流而非文件地址时,需设置responseType为blob或arraybuffer。前端获取响应后,利用Blob对象创建下载链接,通过动态创建a标签触发点击实现文件下载,并处理内存释放。
需求背景与实现方案
需求场景:需要调用后端接口下载Excel文件,但后端不返回文件地址,而是直接返回二进制流数据。
实现方案:采用axios(功能类似ajax)进行网络请求。
核心代码实现如下。
在axios配置中,必须将返回数据的格式设置为blob或arraybuffer。
具体配置示例如下。
axios配置与二进制流处理
var instance = axios.creat({ ... //一些配置
responseType: 'blob', //返回数据的格式,可选值为arraybuffer,blob,document,json,text,stream,默认值为json
})
请求处理逻辑:在获取响应后,需要将二进制数据转换为Blob对象,创建下载链接,并模拟点击事件触发下载。
前端下载逻辑实现
getExcel().then(res => {
//这里res.data是返回的blob对象
var blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'}); //application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = 'xxx.xlsx'; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
})
总结:通过正确设置responseType并处理Blob对象,可成功实现前端下载后端返回的二进制Excel文件。
以上介绍了前端使用axios下载二进制Excel文件的方法,希望对你有帮助。如有疑问请留言,我们将及时回复。感谢支持!
作者最新文章
Node.js中使用path模块获取文件名
2026-11-05 15:15:15
Node.js中url模块与querystring模块处理查询字符串的区别
2026-11-05 15:04:45
JavaScript(JS)主要用来做什么
2026-11-05 10:10:47
怎么修改Node.js和npm的全局安装路径与缓存目录
2026-11-04 19:48:28
NW.js 常见问题排查:Node 模块加载失败与版本兼容解决
2026-11-04 11:22:45
