记录一下关于blob下载问题


1.封装了一个供下载使用的方法
export function PostExport(code, paramJson) {
  return new Promise((resolve, reject) => {
    var json = { code: code, request: paramJson };
    var type = { responseType: "blob" };
    axios
      .post(
        context.$net.PAGE_URL,
        qs.stringify({ requestData: JSON.stringify(json) }),
        type
      )
      .then(res => {
        resolve(res.data);
      })
      .catch(err => {
        reject(err.data);
      });
  });
}
 
2.使用的时候根据封装的方法(此方法是下载压缩文件)
PostExport("E0004", paramJson).then(res => {
            const blob = new Blob([res], { type: "application/zip" });
            const downloadElement = document.createElement("a");
            const href = window.URL.createObjectURL(blob); //创建下载的链接 (可以是 File 对象、Blob 对象或者 MediaSource 对象)
            downloadElement.href = href;
            downloadElement.download = `签约协议${this.getCurrent[0]}.zip`; //下载后文件名
            document.body.appendChild(downloadElement); //将a节点添加到document.body末尾
            downloadElement.click(); //点击下载
            document.body.removeChild(downloadElement); //下载完成移除元素
            window.URL.revokeObjectURL(href); //释放blob对象
          });
        }
2.1(此方法是下载excel文件)
PostExport("R0027", paramJson).then(res => {
        window.console.log(res);
        var blob = new Blob([res]);
        var downloadElement = document.createElement("a");
        var href = window.URL.createObjectURL(blob); //创建下载的链接
        downloadElement.href = href;
        downloadElement.download = `好日子赎回明细${this.getCurrent[0]}.xls`; //下载后文件名
        document.body.appendChild(downloadElement);
        downloadElement.click(); //点击下载
        document.body.removeChild(downloadElement); //下载完成移除元素
        window.URL.revokeObjectURL(href); //释放掉blob对象
      });


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM