axios 下载文件 触发浏览器下载

在前端开发中,有时需要实现文件的下载功能。axios 是一个常用的 JavaScript HTTP 请求库,它可以方便地发送 HTTP 请求,并且提供了下载文件的功能。本文将介绍如何使用 axios 实现文件下载,并触发浏览器下载。

1. 安装和引入 axios

首先,我们需要在项目中安装 axios。可以通过 npm 或者 yarn 进行安装:

npm install axios

安装完成后,在需要使用的文件中引入 axios:

import axios from 'axios';

2. 发送下载请求

使用 axios 发送下载请求的方法与发送其他类型的请求类似,需要指定请求的 URL、请求方法和请求参数等。我们可以通过设置响应的 responseType 为 'blob' 来告诉服务器返回的是一个二进制文件。

下面是一个发送下载请求的示例代码:

axios({
  url: '
  method: 'GET',
  responseType: 'blob',
  params: {
    filename: 'example.pdf'
  }
}).then(response => {
  if (response.status === 200) {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'example.pdf');
    document.body.appendChild(link);
    link.click();
  }
}).catch(error => {
  console.error(error);
});

在上述代码中,我们使用 axios 发送一个 GET 请求,并设置 responseType 为 'blob',以告诉服务器返回的是一个二进制文件。在响应成功后,我们通过 Blob 对象创建了一个临时的 URL,然后创建了一个 <a> 标签,并将临时的 URL 设置为该标签的 href 属性值。最后,将该 <a> 标签添加到文档中,并模拟点击该标签,即可触发浏览器的下载功能。

3. 示例

下面是一个完整的示例,演示了如何使用 axios 下载文件并触发浏览器下载:

import axios from 'axios';

function downloadFile(url, filename) {
  axios({
    url: url,
    method: 'GET',
    responseType: 'blob',
    params: {
      filename: filename
    }
  }).then(response => {
    if (response.status === 200) {
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', filename);
      document.body.appendChild(link);
      link.click();
    }
  }).catch(error => {
    console.error(error);
  });
}

// 调用示例
downloadFile(' 'example.pdf');

总结

本文介绍了如何使用 axios 下载文件并触发浏览器下载。通过设置响应的 responseType 为 'blob',可以告诉服务器返回的是一个二进制文件。在响应成功后,利用 Blob 对象创建临时的 URL,并通过创建 <a> 标签和模拟点击的方式触发浏览器的下载功能。

值得注意的是,上述示例代码中的 URL、请求方法、请求参数等需要根据具体的需求进行修改。同时,还需要处理请求失败的情况,以及清理临时的 URL 等资源。

甘特图

下面是一个使用 mermaid 语法绘制的甘特图,展示了下载文件的过程:

gantt
    dateFormat  YYYY-MM-DD
    title 下载文件的过程

    section 发送请求
    发送请求      : 2022-01-01, 1d

    section 接收响应
    接收响应      : 2022-01-02, 1d

    section 创建 URL
    创建 URL      : 2022-01-03, 1d

    section 创建链接
    创建链接      : 2022-01-04, 1d

    section 模拟点击
    模拟点击      : 2022-01-05, 1d

以上就是使用 axios 下载文件并触发浏览器下载的介绍。希望本文对你有所帮助!