记录一下关于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对象
      });
posted @ 2020-06-10 11:09  943987243  阅读(905)  评论(0编辑  收藏  举报