封装文件

/**
 * 下载压缩包文件
 * @param {blob} fileArrayBuffer 文件流
 * @param {String} filename 文件名称
 * @param {String} fileType 文件格式
 */
export const downloadZip = (fileArrayBuffer, filename, fileType) => {
  let data = new Blob([fileArrayBuffer], {
    type:
      fileType == "zip"
        ? "application/zip,charset=utf-8"
        : "application/x-rar-compressed,charset=utf-8",
  });
  if (typeof window.chrome !== "undefined") {
    // Chrome
    var link = document.createElement("a");
    link.href = window.URL.createObjectURL(data);
    link.download = filename;
    link.click();
    console.log(data);
  } else if (typeof window.navigator.msSaveBlob !== "undefined") {
    // IE
    var blob = new Blob([data], {
      type:
        fileType == "zip" ? "application/zip" : "application/x-rar-compressed",
    });
    window.navigator.msSaveBlob(blob, filename);
  } else {
    // Firefox
    var file = new File([data], filename, {
      type:
        fileType == "zip" ? "application/zip" : "application/x-rar-compressed",
    });
    window.open(URL.createObjectURL(file));
  }
};

使用

//后端返回二进制文件 直接调用方法即可下载 

 async downLoadFile() {
      let res = await commonFileManyDownloads({
        filePath: this.tableData.annex_addr,
      });
      downloadZip(res.data, "附件", "zip");
    },

其中  res.data为二进制文件流

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐