码字,杂谈

使用axios下载文件

因为下载还是挺常见的,所以用axios封装了一下,直接调用即可。

很简单的封装,一般情况下,只需要传入文件路径,文件名,和文件的mime类型即可。

/**
 * Encapsulate Download methods, download files.
 * @param url
 * @param filename
 * @param filetype: file mime type
 * @param config: header config, a object
 * @returns {Promise}
 */
export function download(url, filename, filetype, config = {}) {
  return new Promise((resolve, reject) => {
    axios({ url, responseType: "blob", method: "GET", ...config })
      .then(result => {
        var fileURL = window.URL.createObjectURL(
          new Blob([result.data], { type: filetype })
        );
        var fileLink = document.createElement("a");

        fileLink.href = fileURL;
        fileLink.setAttribute("download", filename);
        document.body.appendChild(fileLink);

        fileLink.click();
        resolve(result);
      })
      .catch(err => {
        reject(err);
      });
  });
}

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注