猿问

使用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);

  } 

})); 


慕无忌1623718
浏览 760回答 2
2回答

素胚勾勒不出你

使用XMLHttpRequest试试
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答