原生XMLHttpRequest实现文件流下载

    var url = '//download';
    var xhr = new XMLHttpRequest();
     // 也可以使用POST方式,根据接口
    xhr.open('GET', url, true);    
    xhr.setRequestHeader('Authorization', "testAuthorization");
    // 返回类型blob
    xhr.responseType = "blob";  
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function () {
      // 请求完成
      if (this.status === 200) {   // 返回200
        var blob = this.response;
        var reader = new FileReader();
        reader.readAsDataURL(blob);  // 转换为base64,可以直接放入a表情href
        reader.onload = function (e) {
          // 转换完成,创建一个a标签用于下载
          var a = document.createElement('a');
          var nameFile = `文件名称.docx`
          a.download = nameFile;
          a.href = e.target.result;
          $("body").append(a);  // 修复firefox中无法触发click
          a.click();
          $(a).remove();
        }
      }
    };
    xhr.send();

你可能感兴趣的:(原生XMLHttpRequest实现文件流下载)