dandanyajin
今天更新博客了吗?
export function downLoad(_url, _method, _data,_newFileName) {
  let baseURL = window.location.protocol + '//' + window.location.host + process.env.VUE_APP_BASE_API;
  function createObjectURL(object) {
    return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
  }

  let xhr = new XMLHttpRequest()
  let url = baseURL + _url;
  if (url.indexOf("?") == -1) {
    url = url + "?nowtimes=" + new Date().getTime();
  } else {
    url = url + "&nowtimes=" + new Date().getTime();
  }
  xhr.open(_method, url)
  xhr.setRequestHeader('Authorization', getToken())
  xhr.responseType = 'blob'
  let formData = new FormData();
  if (_method == 'post') {
    formData = {};
    xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
    for (let key in _data) {
      formData[key] = _data[key];
    }
    formData = JSON.stringify(formData);
  }
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      //取出下载文件名
      let fileName = decodeURI(xhr.getResponseHeader('content-disposition').split(';')[1].split('=')[1]);
      if (_newFileName) {
        let fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
        fileName = _newFileName + fileSuffix
      }
      
      if(!!window.ActiveXObject || "ActiveXObject" in window){
        console.log('ie浏览器')
        var data = xhr.response;
        var blob = new Blob([data], { type: "application/vnd.ms-excel" });
        window.navigator.msSaveOrOpenBlob(blob, fileName);
      }else{
        console.log('非ie浏览器')
        const blob = new Blob([xhr.response])
        let url = window.URL.createObjectURL(blob)
        //创建一个a标签元素,设置下载属性,点击下载,最后移除该元素
        let link = document.createElement('a')
        link.href = url
        link.style.display = 'none'
        link.setAttribute('download', fileName)
        link.click()
        window.URL.revokeObjectURL(url)
      }
    }
  }
  xhr.send(formData);
}

 

posted on 2022-06-13 16:11  dandanyajin  阅读(85)  评论(0编辑  收藏  举报