前端下载文件兼容IE

4次阅读

共计 1000 个字符,预计需要花费 3 分钟才能阅读完成。

之前做的下载文件并兼容 IE,当时搜了好几篇博客,才写出来。现在拿出来分享下,希望能够直接帮到大家,欢迎指正问题~

    let param = {projectId,}
    let url = '/xxx/xxx';
    axios.post(url,param,{responseType: 'blob'})
      .then((response) => {
        let res = response.data;
        if (res["content-type"] && res["content-type"].indexOf('application/json') !== -1) {let reader = new FileReader();
          reader.readAsText(res, 'utf-8');
          reader.onload = function (e) {let data = JSON.parse(reader.result);   //e.target.result 也可
            if(data.msg){message.error(data.msg);
            }           
          }
        }else{let blob = new Blob([response.data])
          let downloadElement = document.createElement('a');
          let href = window.URL.createObjectURL(blob); // 创建下载的链接
          let fileName = response.headers["content-disposition"].split(";")[1].split("filename=")[1];
          if (isIE) {window.navigator.msSaveBlob(blob, fileName);
          } else {
            downloadElement.href = href;
          downloadElement.download = fileName; // 下载后文件名
          document.body.appendChild(downloadElement);
          downloadElement.click(); // 点击下载
          document.body.removeChild(downloadElement); // 下载完成移除元素
          window.URL.revokeObjectURL(href); // 释放掉 blob 对象 
          }
        }
      })
      .catch((err) => {console.error(err)
      });
正文完
 0