前端导出中的blob流转化----兼容主流浏览器 (而使用window.URL.createObjectURL这种方式是不兼容IE的)

流转化方法

//流转化
export function exportSearchList(dowLoadFileName, result) {
  const blob = new Blob([result]);
  const fileName = dowLoadFileName + '.xls';
  // 判断浏览器
  var brower = '';
  if (navigator.userAgent.indexOf('Edge') > -1) {
    brower = 'Edge';
  }

  if ('download' in document.createElement('a')) {
    // 非IE下载
    if (brower == 'Edge') {
      navigator.msSaveBlob(blob, fileName);
      return;
    }
    const elink = document.createElement('a');
    elink.download = fileName;
    elink.style.display = 'none';
    elink.href = URL.createObjectURL(blob);
    document.body.appendChild(elink);
    elink.click();
    URL.revokeObjectURL(elink.href);
    // 释放URL 对象
    document.body.removeChild(elink);
  } else {
    // IE10+下载
    navigator.msSaveBlob(blob, fileName);
  }
}

第一个参数为文件名,第二个参数为接口请求回来的blob流

在自己模块引入上述js文件,然后在当初方法中调用即可

 // 导出
    Export(){
      axios({
        method: 'post',
        url: 'kkkk',
        data: {},
        headers:{
          'Content-type': 'application/json',
        },
        responseType: 'blob'
      }).then(res=>{
        // console.log(res);
        this.exportSearchList('deviceBorrow', res.data);
      });
    },

注解一下:
如果使用window.URL.createObjectURL这种方式的化,是不兼容IE的。

如果要考虑兼容性问题,不建议使用下面的方式

  axios({
    method: 'post',
    url: 'kkkk',
    data: {},
    headers:{
      'Content-type': 'application/json',
    },
    responseType: 'blob'
  }).then(res=>{
    // console.log(res);
  	let url = window.URL.createObjectURL(res)
    let link = document.createElement('a')
    link.href = url
    link.setAttribute('download', `单据-${this.searchForm.exportDateStr}.zip`)
    link.click()
  });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值