使用axios下载二进制流文件

1.下载文件的api接口,在api.js中书写

export const downloadFiles= (params) => {
  return axios.post(`${baseUrl}/downloadFiles`, params, {
    responseType: "blob",
  });
};

2.调用api接口,在需要使用下载的方法中书写,使用async和await异步加载的方式

let res = await downloadFiles(id)
//省略处理name和type的代码
//...
//name为文件名,type为文件格式
exportFile(res.data, name, type);

3.exportFile函数

function exportFile(data, filename, ext = "xlsx", type = "application/vnd.ms-excel") {
  let blob = new Blob([data], { type });
  if (window.navigator.msSaveBlob) {
    try {
      // ie浏览器自带下载文件的方法
      window.navigator.msSaveBlob(data, filename);
    } catch (e) {
      console.log(e);
    }
  } else {
    let elink = document.createElement("a");
    elink.download = filename + "." + ext;
    elink.style.display = "none";
    let href = window.URL.createObjectURL(blob);
    elink.href = href;
    document.body.appendChild(elink);
    elink.click();
    document.body.removeChild(elink);
    window.URL.revokeObjectURL(href); // 释放掉blob对象
  }
}
posted @   ajajaz  阅读(183)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-11-01 node 实现socket通信
点击右上角即可分享
微信分享提示