鍍金池/ 問答/Linux  HTML/ 使用Fetch下載文件,IE不兼容,求助!??!

使用Fetch下載文件,IE不兼容,求助?。。?/h1>

使用Fetch請求服務,后端服務沒有生成具體文件,返回的是字節(jié)流,用下面的方式在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);
  } 
})); 

回答
編輯回答
背叛者

使用XMLHttpRequest試試

2017年2月17日 00:22
編輯回答
朕略傻

要兼容到IE幾呢?
如果是 IE10 及以上的話,可以用 Github 的 fetch polyfill: https://github.com/github/fetch

2018年6月18日 00:09