使用Fetch下载文件,IE不兼容,求助!!!

使用Fetch请求服务,后端服务没有生成具体文件,返回的是字节流,用下面的方式在Chrome可以使用,但是无法兼容IE,求助解决方案。(要求不在服务器生成文件;由于项目问题,要求使用fetch。)

fetch(url).then(res => res.blob().then(blob => { 
      var a = document.createElement('a'); 
      var url = window.URL.createObjectURL(blob);   // 获取 blob 本地文件连接 (blob 为纯二进制对象,不能够直接保存到磁盘上)
      var filename = res.headers.get('Content-Disposition'); 
      a.href = url; 
      a.download = filename; 
      a.click(); 
      window.URL.revokeObjectURL(url); 
    })); 

=======================================================================================
找到了IE10+的解决方法,但是不兼容IE9┓(;´_`)┏

fetch(url).then(res => res.blob().then(blob => {
  var filename = res.headers.get('Content-Disposition');
  if (window.navigator.msSaveOrOpenBlob) {
   navigator.msSaveBlob(blob, filename);
  }else {
   var a = document.createElement('a'); 
   var url = window.URL.createObjectURL(blob);   // 获取 blob 本地文件连接 (blob 为纯二进制对象,不能够直接保存到磁盘上) 
   a.href = url; 
   a.download = filename; 
   a.click(); 
   window.URL.revokeObjectURL(url);
  } 
})); 
阅读 4.7k
2 个回答

使用XMLHttpRequest试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题