post 模擬下載接口 (兼容ie)

let url = '/FileService/Export/Task/download', param;

 axios.post(, param, {responseType: 'blob'})
      .then(function(response) {
        let res = response.data;
        if (res.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.info){
              message.error(data.info);
            }else 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].split(".zip")[0];
          if (isIE()) {
            window.navigator.msSaveBlob(blob, fileName);
          } else {
            downloadElement.href = href;
            downloadElement.download = `${fileName}.zip`; //下載後文件名
            document.body.appendChild(downloadElement);
            downloadElement.click(); //點擊下載
            document.body.removeChild(downloadElement); //下載完成移除元素
            window.URL.revokeObjectURL(href); //釋放掉blob對象
          }
        }
      })
      .catch(function(error) {
        console.error("error",error)
        message.error("出現異常,請重試");
      });
相關文章
相關標籤/搜索