前端下载文件(后端返回二进制文件流+文件类型)(所有文件类型均可下载)

请求:

// 下载单个文件
export function commonFileDownloads(query) {
  return request({
    url: `url`,
    method: "GET",
    responseType: "arraybuffer", // 设置axios接收的类型
  });
}

代码:

 //下载附件
    async downLoadFile(annexAddr) {
      this.is_tijiao = true;
      let res = await commonFileDownloads(annexAddr);//拿到后端返回的二进制文件流以及文件名+类型
      let stringName = res.headers["content-disposition"].split(";")[1]; //一般来说,文件名字后端都在返回头里,前后端可以约定文件名前用 @ 符号分隔,便于取值,用其他符号也可以。
      let fileNameEnd = stringName.split(".")[1]; //获取到了后缀名
      let fileName = stringName.split(".")[0].slice(9); //获取到文件名(不含后缀)
      fileName = decodeURIComponent(fileName); //一般来说后端返回的名字没有转码,需要前端解码utf-8,如果后端转了,就不用转。
      let endFileName = `${decodeURIComponent(fileName) + "." + fileNameEnd}`;
      let blob = new Blob([res.data], { type: "application/zip" }); //application/zip就是设置下载类型,需要设置什么类型可在标题二处查看,
      const url = window.URL.createObjectURL(blob); //设置路径
      const link = window.document.createElement("a"); // 创建a标签
      link.href = url;
      link.setAttribute("download", endFileName); // 给下载后的文件命名
      link.style.display = "none";
      link.click();
      URL.revokeObjectURL(url); // 释放内存
      this.is_tijiao = false;
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值