获取后端返回的文件流 前端进行文件下载

获取后端返回的文件流 前端进行文件下载

1. 在 utils 文件夹下创建 downloadFile.ts

js 复制代码
import axios from "axios";

interface Params {
  url: string;
  method: string;
  data: any;
}

export const downLoadFileBlob = (params: Params) => {
  return axios({
    url: params.url, //下载地址
    method: params.method, //请求方式
    responseType: "blob", //返回类型
    data: params.data, //请求参数
  });
};

2. 使用

js 复制代码
// 导入请求方法
import { downLoadFileBlob } from "@/utils/downloadFile";

//文件流请求方法
const downLoadFileFun = () => {
  const data = {
    dateType: 2,
    startTime: "2024-07-01 00:00:00",
    endTime: "2024-07-31 10:15:21",
  };
  downLoadFileBlob({
    url: "/api/v1/report/export/excel",
    method: "post",
    data: data,
  }).then((res)=>{
    if(res.status === 200){
      const debug = res.data;
      if(debug){
        const elink = document.createElement("a");

        //获取后端返回的文件名 一般在 Content-Disposition 上
        const contentDisposition: string = res.headers.get(
          "Content-Disposition"
        );

        //获取文件名 应该是中午乱码的,需要解码一下
        const filename: string = contentDisposition.split("filename=")[1];
        // 解码一下文件名
        const tempName = decodeURIComponent(filename) 

        elink.download = tempName;
        elink.style.display = "none";
        const blob = new Blob([debug], { type: "application/x-msdownload" });
        elink.href = URL.createObjectURL(blob);
        document.body.appendChild(elink);
        elink.click();
        document.body.removeChild(elink);
      }else{
        console.log("下载失败");
      }
    }
  })
};
相关推荐
iReachers13 分钟前
HTML打包EXE工具四种弹窗方式图文详解 - 单窗口/新窗口/标签页/浏览器打开
前端·javascript·html·弹窗·html打包exe·html转程序
耗子君QAQ22 分钟前
🔧 Rattail | 面向 Vite+ 和 AI Agent 的前端工具链
前端·javascript·vue.js
萑澈9 小时前
Windows 7 运行 Electron 安装包报“不是有效的 Win32 应用程序”怎么办
javascript·windows·electron
W.A委员会9 小时前
JS原型链详解
开发语言·javascript·原型模式
她说彩礼65万10 小时前
C# 实现简单的日志打印
开发语言·javascript·c#
状元岐11 小时前
C#反射从入门到精通
java·javascript·算法
a11177612 小时前
Three.js 的前端 WebGL 页面合集(日本 开源项目)
前端·javascript·webgl
Kk.080212 小时前
项目《基于Linux下的mybash命令解释器》(一)
前端·javascript·算法
程序员鱼皮12 小时前
又一个新项目开源,让 AI 帮你盯全网热点!
javascript·ai·程序员·编程·ai编程
MXN_小南学前端12 小时前
前端开发中 try...catch 到底怎么用?使用场景和最佳实践
javascript·vue.js