Blob下载为对应文件

1,442 阅读1分钟

接口返回为字节流,接收字节流后通过Blob保存为对应格式的文件

axios({
  method: 'post',
  url: 接口地址,
  data: 接口参数,
  responseType: 'arraybuffer',
  timeout: 30000, //设置响应超时时间
}).then(res => {
  var blob = new Blob([res.data], {type: type: 'application/vnd.ms-excel;charset=utf-8'}); //这里表示xlsx类型
  var downloadElement = document.createElement('a');
  var href = window.URL.createObjectURL(blob); //创建下载的链接
  downloadElement.href = href;
  downloadElement.download = this.exportName + this.formatDate() + '.xlsx'; //下载后文件名
  document.body.appendChild(downloadElement);
  downloadElement.click(); //点击下载
  document.body.removeChild(downloadElement); //下载完成移除元素
  window.URL.revokeObjectURL(href); //释放掉blob对象
})

不同格式文件配置

  • pdf
 blob= new Blob([res.data], {type: 'application/pdf;charset=utf-8'});
  • excel - xls、xlsx
blob= new Blob([res.data], {type: 'application/vnd.ms-excel;charset=utf-8'});
  • word - doc、docx
blob= new Blob([res.data], {type: 'application/msword;charset=utf-8'});
  • 压缩文件 - zip、rar
blob= new Blob([res.data], {type: 'application/zip;charset=utf-8'});