更新记录
1.0.0(2026-07-03)
file-picker-uts 文件选择器
跨平台原生文件选择插件,支持 Android 和 iOS,基于 UTS 开发。
简介
file-picker-uts 是一个专为 uni-app x / uni-app 设计的原生文件选择插件。它调用系统原生的文件管理器来选择文件,支持单选、多选以及文件类型过滤。
平台兼容性
| 平台 | 支持度 | 备注 |
|---|---|---|
| Android |
平台兼容性
uni-app(5.14)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | 14.0 | 13 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
file-picker-uts 文件选择器
跨平台原生文件选择插件,支持 Android 和 iOS,基于 UTS 开发。
简介
file-picker-uts 是一个专为 uni-app x / uni-app 设计的原生文件选择插件。它调用系统原生的文件管理器来选择文件,支持单选、多选以及文件类型过滤。
平台兼容性
| 平台 | 支持度 | 备注 |
|---|---|---|
| Android | 🟢 支持 | 调用原生系统文件选择器 |
| iOS | 🟢 支持 | 调用 UIDocumentPickerViewController |
| 微信小程序 | ➖ 不支持 | 可回退使用 wx.chooseMessageFile |
API 接口
chooseFile(options, onSuccess, onCancel)
打开系统文件选择器进行文件选择。
参数说明:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| options | FilePickerOptions | 是 | 配置选项 |
| onSuccess | Function | 是 | 成功回调,返回 FilePickerResult |
| onCancel | Function | 是 | 用户取消回调 |
FilePickerOptions 参数说明:
| 属性名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| extension | String[] | [] |
允许选择的文件类型扩展名数组,如 ['.pdf', '.doc']。传空数组表示不限制。 |
| count | Number | 1 |
最大选择数量。大于1时开启多选。 |
| onLog | Function | null |
原生底层日志回调,用于调试。 |
FilePickerResult 返回值说明:
| 属性名 | 类型 | 描述 |
|---|---|---|
| success | Boolean | 是否选择成功 |
| paths | String[] | 选择的文件绝对路径数组(临时文件路径) |
使用示例
基本使用
import { chooseFile } from '@/uni_modules/file-picker-uts';
// 选择单个 PDF 或 DOC 文件
chooseFile(
{
extension: ['.pdf', '.doc', '.docx'],
count: 1
},
(result) => {
if (result.success) {
console.log('选择的文件路径:', result.paths);
// 可以使用 uni.uploadFile 上传文件
}
},
() => {
console.log('用户取消了选择');
}
);
结合 hook 使用(推荐)
你可以自行封装一个统一的 useMediaPicker hook,以便同时处理图片、视频和普通文件的选择。
import { chooseFile } from '@/uni_modules/file-picker-uts';
export function pickFile() {
return new Promise((resolve) => {
// #ifndef MP-WEIXIN
chooseFile(
{ extension: [], count: 5 },
(result) => {
resolve(result.paths);
},
() => {
resolve(null);
}
);
// #endif
// #ifdef MP-WEIXIN
uni.chooseMessageFile({
count: 5,
type: 'file',
success: (res) => {
resolve(res.tempFiles.map(f => f.path));
},
fail: () => resolve(null)
});
// #endif
});
}
注意事项
- 文件路径:插件返回的路径为复制到应用沙盒缓存目录的临时路径,可以直接用于
uni.uploadFile等 API,应用重启或清理缓存时可能会被系统回收。 - iOS 平台:内部默认获取了
TopViewController来弹出UIDocumentPickerViewController,如果当前页面有复杂的 presentedViewController 层级,可能会有轻微延迟动画,插件内已做了兼容处理。 - Android 平台:多选文件的后缀名过滤,某些定制的 Android 系统文件管理器可能不支持 MIME 类型过滤,此时会退化为可选所有文件。

收藏人数:
购买普通授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 0
赞赏 0
下载 12387757
赞赏 1928
赞赏
京公网安备:11010802035340号