下载文件

fileDownload(id, name) {
    // 下载附件
    var _this = this;
    this.getBlob(`/officeNetwork/material?materialId=${id}`, function (blob) {
      _this.saveAs(blob, name);
    });
  }

  /**
    * 获取 blob
    * @param  {String} url 目标文件地址
    * @return {cb} 
    */
  getBlob(url, cb) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function () {
      if (xhr.status === 200) {
        cb(xhr.response);
      }
    };
    xhr.send();
  }

  /**
  * 保存
  * @param  {Blob} blob     
  * @param  {String} filename 想要保存的文件名称
  */
  saveAs(blob, filename) {
    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob, filename);
    } else {
      var link = document.createElement('a');
      var body = document.querySelector('body');
      link.href = window.URL.createObjectURL(blob);
      link.download = filename;
      // fix Firefox
      link.style.display = 'none';
      body.appendChild(link);
      link.click();
      body.removeChild(link);
      window.URL.revokeObjectURL(link.href);
    };
  }

你可能感兴趣的:(下载文件)