当前位置:首页 > React

react如何下载文件

2026-03-10 17:12:14React

使用 fetchaxios 下载文件

通过 fetchaxios 发送请求获取文件数据,将响应转换为 Blob 对象,并创建下载链接。

示例代码(fetch):

fetch('文件URL')
  .then(response => response.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = '文件名.扩展名'; // 设置下载文件名
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    document.body.removeChild(a);
  });

示例代码(axios):

axios.get('文件URL', { responseType: 'blob' })
  .then(response => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const a = document.createElement('a');
    a.href = url;
    a.download = '文件名.扩展名';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    document.body.removeChild(a);
  });

使用 <a> 标签直接下载

适用于无需鉴权的静态文件,直接通过 HTML 标签触发下载。

示例代码:

<a href="文件URL" download="文件名.扩展名">下载文件</a>

处理后端返回的文件流

若后端返回文件流(如 Node.js 的 res.download),确保前端正确解析 Blob 并触发下载。

后端示例(Node.js Express):

app.get('/download', (req, res) => {
  res.download('服务器文件路径', '客户端文件名.扩展名');
});

前端处理:

react如何下载文件

fetch('/download')
  .then(response => response.blob())
  .then(blob => {
    // 同上述 Blob 处理逻辑
  });

注意事项

  • 跨域问题:确保文件 URL 允许跨域请求(CORS 配置)。
  • 鉴权:需鉴权的文件需在请求头中添加 Authorization 等字段。
  • 大文件处理:考虑分块下载或进度提示(如 axiosonDownloadProgress)。

通过以上方法,可根据实际需求选择适合的下载方式。

分享给朋友:

相关文章

css文件制作详细点

css文件制作详细点

CSS 文件制作指南 CSS(层叠样式表)用于控制网页的样式和布局。以下是详细的制作方法: 创建 CSS 文件 新建一个文本文件,将其保存为 .css 扩展名,例如 styles.css。确保文件名…

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件实现文件树 递归组件是Vue中实现文件树的常见方法。通过组件自身调用自身,可以处理嵌套的目录结构。 <template> <div>…

vue文件底层实现

vue文件底层实现

Vue 文件的底层实现 Vue 单文件组件(SFC,即 .vue 文件)的底层实现依赖于 Vue 的编译工具链,主要包括 @vue/compiler-sfc 和构建工具(如 Vite 或 Webpac…

vue实现文件导入

vue实现文件导入

文件导入的基本实现 在Vue中实现文件导入通常通过HTML的<input type="file">元素结合File API完成。创建一个文件选择组件,监听change事件获取用户选择的文件…

vue实现搜索文件

vue实现搜索文件

Vue 实现搜索文件功能 在 Vue 中实现文件搜索功能,可以通过以下步骤完成。这里假设文件数据存储在本地或通过 API 获取。 数据准备 确保有一个文件列表数据,可以是静态数据或从后端 API 获…

vue实现文件进度

vue实现文件进度

Vue 实现文件上传进度 使用 Vue 实现文件上传进度可以通过结合 axios 或原生 XMLHttpRequest 的进度事件来实现。以下是两种常见方法: 使用 axios 上传文件并显…