js ajax异步请求下载文件

使用浏览器fetch API执行异步文件下载请求,如:Excel、PDF、word文档、图片下载等。

依赖组件:

import qs from 'qs';

使用浏览器fetch API执行下载

function download(url, param, call) {
  var myRequest = new Request(url);
  var token = ""//示例参数;
  fetch(myRequest, {
    method: "POST",
    headers: {
      Authorization: token,
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: qs.stringify(param)
  })
    .then(response => response.blob())
    .then(function (data) {
      call(data);
    });
}

说明:qs可用FormData代替

const formData = new FormData();
const fileField = document.querySelector('input[type="file"]');

formData.append('username', 'abc123');
formData.append('avatar', fileField.files[0]);

调用下载:

download(downloadUrl, {  }, function(data) {
     var objectURL = URL.createObjectURL(data);
     window.location.href = objectURL;
});