前端使用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文件的方法,希望对你有帮助。如有疑问请留言,我们将及时回复。感谢支持!

作者最新文章