更新记录
0.1.3(2026-04-15)
- 新增
utssdk/app-ios/config.json,显式指定 iOSdeploymentTarget为12.0,避免UIDocumentPickerViewController.allowsMultipleSelection在编译期被按低版本 API 拦截 - iOS 调整
chooseFile内多选日志输出,避免为打印日志再次直接读取picker.allowsMultipleSelection
0.1.2(2026-03-23)
- 修复 iOS 中系统文件选择弹窗在选中文件后长时间停留、再次确认时可能卡住且后续无法继续 pick 的问题
- iOS 调整
UIDocumentPickerViewController会话管理,补充 picker / delegate 状态清理,避免异常场景下残留会话锁死后续调用 - iOS 文件选择器改为使用
UIDocumentPickerMode.open,与当前 security-scoped 读取和copyToCache流程保持一致
0.1.1(2026-03-23)
- 对齐 iOS / Android / Harmony 成功回调
files项字段,iOS 与 Harmony 新增返回文件大小size - Harmony 在
copyToCache=true时会在复制过程中累计文件大小,避免重复读取
平台兼容性
uni-app(4.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | - | 5.0 | 12 | 5.0.0 |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.0)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | 5.0 | 12 | 5.0.0 | - |
q-native-file-picker
UTS 插件:使用系统原生 UI 打开文件选择器(Android / iOS / Harmony Next)。
平台说明
- App-Android:使用系统
ACTION_OPEN_DOCUMENT(Storage Access Framework) - App-iOS:使用
UIDocumentPickerViewController - App-Harmony Next:使用
@ohos.file.pickerDocumentViewPicker - Web/H5:进入 API 直接 toast 提示并返回
9012002
UTS 插件改动需要重新编译/重新打包基座后生效。
API
import { chooseFile } from "@/uni_modules/q-native-file-picker";
chooseFile({
multiple: false,
copyToCache: true,
success: (res) => console.log(res),
fail: (err) => console.log(err)
})
options
multiple:是否多选(默认false)maxCount:多选最大数量(<=0或不传表示不限制;仅multiple=true生效;iOS 系统选择器不支持 UI 侧限制数量,插件会在回调结果中截断/过滤)fileTypes:文件类型过滤(扩展名数组,不含点,如["pdf","png"];等价于extensions,优先级更高;Android 会尽量从扩展名推导 MIME 以限制系统选择器,但依然可能被用户选到其它类型,最终会在结果侧过滤)mimeTypes:MIME 过滤(主要用于 Android,如["image/*","application/pdf"];系统选择器过滤能力因 ROM/文件管理器不同而存在差异,插件会在结果侧做二次过滤;若过滤后为空会走fail回调并返回9012005)copyToCache:是否复制到缓存目录(默认true)
多选示例
chooseFile({
multiple: true,
maxCount: 3,
fileTypes: ["pdf", "png", "jpg"],
copyToCache: true,
success: (res) => console.log(res),
fail: (err) => console.log(err)
})
返回值
files: 归一化后的文件数组(每项包含name/size/mimeType/uri/path)。
关于 size / path / uri
-
size:三端都会尽量返回文件大小;若系统 provider/权限限制导致无法读取,则可能为null。 -
uri:系统返回的原始标识(Android 常为content://...,iOS/Harmony 可能为file://...或其它 scheme)。 -
path:当copyToCache=true时为插件复制到应用缓存/临时目录后的真实路径(更适合交给uni.uploadFile)。
源码结构与实现原理
本文档以“API 使用说明”为主;若你需要了解各端技术实现方案(Android/iOS/Harmony/Web)与源码走向,请阅读:
implementation.md(维护者/二次开发者向,包含各端实现细节与关键注意事项)
iOS 调试日志
- iOS 侧关键日志统一以
"[q-native-file-picker][iOS]"开头,可在真机运行日志/Xcode 控制台中查看。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 19
赞赏 0
下载 11676803
赞赏 1908
赞赏
京公网安备:11010802035340号