当前位置:首页 > React

react如何下载文件

2026-03-31 16:37:18React

使用 fetchBlob 下载文件

通过 fetch 获取文件数据,转换为 Blob 对象,生成下载链接并触发点击:

const downloadFile = async (url, filename) => {
  const response = await fetch(url);
  const blob = await response.blob();
  const downloadUrl = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = downloadUrl;
  link.download = filename;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  window.URL.revokeObjectURL(downloadUrl);
};

调用示例:downloadFile('https://example.com/file.pdf', 'document.pdf')

使用 axios 下载文件

适用于需要添加请求头或处理大文件分片的情况:

import axios from 'axios';

const downloadWithAxios = async (url, filename) => {
  const response = await axios.get(url, { responseType: 'blob' });
  const blob = new Blob([response.data]);
  const downloadUrl = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = downloadUrl;
  link.download = filename;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  window.URL.revokeObjectURL(downloadUrl);
};

调用时需确保 axios 已安装。

直接通过 <a> 标签下载

适用于公开可访问的静态文件,无需处理权限或动态内容:

<a href="https://example.com/file.pdf" download="document.pdf">
  下载文件
</a>

注意:跨域文件可能受浏览器安全策略限制。

处理后端返回的文件流

当后端返回文件流时,通过设置 Content-Disposition 头部自动下载:

const handleStreamResponse = async (apiEndpoint) => {
  const response = await fetch(apiEndpoint);
  const contentDisposition = response.headers.get('Content-Disposition');
  const filename = contentDisposition.split('filename=')[1];
  const blob = await response.blob();
  const url = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = filename;
  link.click();
};

需确保后端正确设置响应头。

react如何下载文件

注意事项

  • 跨域问题:确保服务器配置 CORS 允许文件下载。
  • 大文件处理:使用分片下载或进度提示优化用户体验。
  • 权限控制:私有文件需在请求中添加认证头(如 Authorization)。

分享给朋友:

相关文章

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

vue实现文件导入

vue实现文件导入

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

vue中实现文件导入

vue中实现文件导入

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

vue文件下载实现方式

vue文件下载实现方式

vue文件下载实现方式 使用a标签下载 通过创建a标签并设置download属性实现文件下载。适用于已知文件URL或Blob对象的情况。 // 方法1: 直接使用URL const download…

如何下载react库

如何下载react库

使用 npm 安装 React 通过 npm(Node.js 包管理器)可以快速安装 React。确保已安装 Node.js,然后在项目目录中运行以下命令: npm install react re…

react项目如何下载依赖项

react项目如何下载依赖项

安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm 工具)。可通过以下命令验证是否安装成功: node -v npm -v 若未安装,需从 Node.js 官网 下载…