前端文件下载

88 阅读1分钟
  • 一般后端的文件下载接口返回数据分为2类(文件流、二进制流)
  • 二进制流:
    image.png
    // vue axios接口配置
    export function downloadRobotReport(params) {
      return request({
        url: "/report/download",
        method: "get",
        params,
        responseType:"blob"
      });
    }

    downloadRobotReport({
      sn: row.sn,
    }).then((res) => {
      console.log(res.data);
      // 创建一个URL对象,该对象表示一个指向指定数据的URL。通常,这个方法用于将二进制数据转换为URL,以便在浏览器中显示或下载。
      let url = window.URL.createObjectURL(res.data);
      let a = document.createElement("a");
      document.body.appendChild(a);
      let fileName = res.headers["content-disposition"]
        .split(";")[1]
        .split("=")[1]; 
      a.href = url;
      a.download = fileName; //命名下载名称
      a.click(); 
      //下载完成释放url资源
      window.URL.revokeObjectURL(url); 
});