React Native跨平台文件上传库推荐(支持doc、pdf、txt等)
推荐React Native中跨平台文件选择/上传库(支持doc、pdf、txt等格式)
我明白你想要找像image-picker那样易用的跨平台文件处理库,能支持iOS和Android,还能处理doc、pdf、txt这类文档格式。下面是几个经过社区验证的优质库,按推荐优先级排序:
1. react-native-document-picker
这是社区里最受欢迎的文件选择库之一,完全跨平台,支持你提到的所有文档格式,还能兼容图片、视频等其他类型文件。
- 核心优势:API风格和
image-picker高度相似,上手几乎零成本;能直接获取文件的本地URI、MIME类型和文件名,方便快速对接后端上传接口。 - 基础用法示例:
import DocumentPicker from 'react-native-document-picker'; const pickDocument = async () => { try { const result = await DocumentPicker.pick({ // 可以精准指定支持的文件类型,比如只选pdf、txt和doc type: ['application/pdf', 'text/plain', 'application/msword'], }); console.log('选中文件详情:', result); // 这里将result.uri传入你的上传逻辑即可 } catch (err) { if (DocumentPicker.isCancel(err)) { console.log('用户取消了文件选择'); } else { console.error('文件选择出错:', err); } } }; - 配置注意:iOS需要在
Info.plist中添加NSDocumentPickerUsageDescription字段说明权限用途;Android针对13以下系统,需在AndroidManifest.xml中配置读取外部存储的权限。
2. expo-document-picker(Expo项目专属)
如果你是基于Expo开发的项目,这个官方库绝对是首选——无需任何原生配置,直接安装就能用,跨平台表现高度一致。
- 核心优势:和
expo-image-picker的使用逻辑完全对齐,学习成本极低;支持获取文件的本地URI或base64编码,满足不同上传需求。 - 基础用法示例:
import * as DocumentPicker from 'expo-document-picker'; const pickDocument = async () => { const result = await DocumentPicker.getDocumentAsync({ type: ['application/pdf', 'text/plain', 'application/msword'], copyToCacheDirectory: true, // 建议开启,避免文件路径失效 }); if (result.type === 'success') { console.log('文件信息:', result.uri, result.name, result.size); // 执行你的上传操作 } };
3. react-native-file-picker(备选)
这个库同样支持跨平台文件选择,API简洁直观,不过社区活跃度不如前两个,适合一些对功能要求简单的场景。它能快速获取文件路径和基本信息,后续上传逻辑和其他库完全通用。
综合来看,react-native-document-picker是纯React Native项目的最优选择,功能稳定、社区支持完善;如果是Expo项目,expo-document-picker是官方推荐的最佳方案,无需原生配置,上手更快。
内容的提问来源于stack exchange,提问作者kalyani_jamunkar




