更新记录
1.1.15(2026-04-18)
- 优化 iOS 文件类型前置过滤:
accept到 UTI 的映射由“单值”升级为“多值集合”策略,补充zip/rar的兼容 UTI(如com.pkware.zip-archive、public.archive),提升系统文件选择器命中率。 - 优化 iOS
accept解析去重逻辑:新增appendUti统一去重追加,避免重复 UTI 造成的过滤冗余。 - 修复 UTS 编译兼容细节:多处数组累加变量由
const调整为let,降低跨端桥接和编译阶段的可变集合处理风险。
1.1.14(2026-04-14)
- 修复 iOS 云打包编译失败:移除
toPickFilesOptions中对Any的动态属性访问写法(obj.accept / obj.multiple / obj.maxCount / obj.maxSize / obj.filename / obj.success / obj.fail / obj.complete),避免 Swift 侧出现value of type 'Any' has no member ...编译错误。 - 修复 iOS 云打包编译失败:单文件包装链路中对
files[0]显式收敛为PickedFile,修复cannot convert value of type 'Any?' to expected argument type 'PickedFile?'。 - 调整
pickFiles桥接类型兼容策略:对外参数维持桥接可用性(PickFiles放宽为any),并统一多端单文件包装中的files回调形参为Array<any>,降低 byJs 代理层类型不一致导致的崩溃风险。
1.1.3(2026-04-10)
- 修复 iOS 原生文件选择器主线程调用问题:
pickFile/pickFiles统一通过主线程调度拉起UIDocumentPickerViewController,避免Call must be made on main thread异常。 - 修复 iOS 单文件选择稳定性问题:调整单文件桥接回调与参数归一化路径,避免运行时强制类型转换导致的闪退。
- 修复 iOS 多文件选择稳定性问题:优化
didPickDocumentsAt回调处理,直接构建PickedFile[]返回,降低多文件场景崩溃风险。 - 修复 iOS 编译兼容问题:将控制器遍历与展示逻辑改为强类型
UIViewController,避免Any无成员导致的云打包编译失败。
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
lizhao-choose-file
lizhao-choose-file 是纯 UTS 文件选择 API 插件,统一通过 UTS 对外暴露 pickFiles 与 pickFile,支持 uni-app 与 uni-app x 多端调用。
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| uni-app | 是 | Vue2/Vue3 可用 |
| uni-app x | 是 | 多端可用 |
| Android | 是 | 使用系统文件选择器 |
| iOS | 是 | 使用系统文件选择器 |
| Harmony | 是 | 使用系统文件选择器 |
| Web | 是 | 使用浏览器文件选择能力 |
| 微信小程序 | 是 | 使用小程序文件选择能力 |
| 支付宝小程序 | 是 | 使用小程序文件选择能力 |
安装说明
import * as LizhaoChooseFile from '@/uni_modules/lizhao-choose-file'
说明:本插件为 API 插件,不提供 <lizhao-choose-file /> 组件标签。
目录结构说明
uni_modules/
└─ lizhao-choose-file/
├─ package.json
├─ readme.md
├─ changelog.md
├─ example/
└─ utssdk/
├─ interface.uts
├─ unierror.uts
├─ index.uts
├─ common/
│ └─ picker-core.uts
├─ app-android/
│ └─ index.uts
├─ app-ios/
│ └─ index.uts
├─ app-harmony/
│ └─ index.uts
├─ web/
│ └─ index.uts
├─ mp-weixin/
│ └─ index.uts
└─ mp-alipay/
└─ index.uts
API 列表
pickFiles(options)pickFile(options)
pickFiles(options)
说明 选择多个文件并返回统一文件结构。
支持平台 Android / iOS / Harmony / Web / 微信小程序 / 支付宝小程序
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | PickFilesOptions | 是 | 文件选择参数对象 | 无 | accept / multiple / maxCount / maxSize / filename / success / fail / complete |
| options.accept | string | 否 | 文件类型过滤规则 | */* |
.pdf,.docx / image/* / video/* / */* |
| options.multiple | boolean | 否 | 是否允许多选 | false |
true / false |
| options.maxCount | number | 否 | 最大可选数量(单选场景固定按 1 处理) | 多选默认 9,单选默认 1 |
大于 0 的整数 |
| options.maxSize | number | 否 | 单文件最大体积(字节) | 0 |
大于等于 0 的数值 |
| options.filename | string | 否 | 返回结果重命名模板,多选自动追加 _1/_2 |
无 | 任意字符串(可含扩展名) |
| options.success | function | 否 | 选择成功回调 | 无 | 无 |
| options.fail | function | 否 | 选择失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调(成功返回文件数组,失败返回错误对象) | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 文件名 |
| size | number | 文件大小(字节) |
| type | string | MIME 类型 |
| path | string | 临时文件路径 |
| url | string | 可用于预览或上传的地址 |
| lastModified | number | 最近修改时间戳(毫秒) |
| source | string | 平台来源标记(如 uts-android) |
| ext | string | 文件扩展名(不含 .) |
pickFile(options)
说明
选择单个文件,成功回调返回 PickedFile | null。
支持平台 Android / iOS / Harmony / Web / 微信小程序 / 支付宝小程序
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | PickFileOptions | 是 | 单文件选择参数对象 | 无 | accept / maxSize / filename / success / fail / complete |
| options.accept | string | 否 | 文件类型过滤规则 | */* |
.pdf,.docx / image/* / video/* / */* |
| options.maxSize | number | 否 | 单文件最大体积(字节) | 0 |
大于等于 0 的数值 |
| options.filename | string | 否 | 返回结果重命名模板 | 无 | 任意字符串(可含扩展名) |
| options.success | function | 否 | 选择成功回调 | 无 | 无 |
| options.fail | function | 否 | 选择失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调(成功返回文件对象,失败返回错误对象) | 无 | 无 |
错误码说明
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9011001 | platform unsupported | 当前平台不支持 |
| 9011002 | user cancelled | 用户取消选择 |
| 9011003 | permission denied | 文件访问权限不足 |
| 9011004 | count exceeded | 选择数量超过 maxCount |
| 9011005 | invalid file type | 文件类型不符合 accept 规则 |
| 9011006 | file size exceeded | 文件体积超过 maxSize |
| 9011007 | system error | 系统异常或底层选择失败 |
权限说明
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android | 是 | 使用系统文件选择器,通常不需额外存储权限 |
| iOS | 是 | 使用系统文件选择器,按系统策略处理授权 |
| Harmony | 是 | 使用系统文件选择器 |
| Web | 是 | 由浏览器处理文件选择授权 |
| 小程序 | 是 | 由小程序运行时处理文件选择授权 |
自定义基座说明
- 当前版本未接入三方原生 SDK。
- 当前版本未新增 Android/iOS 原生依赖与特殊清单配置。
- 常规使用无需自定义基座。
示例(uni-app)
import * as LizhaoChooseFile from '@/uni_modules/lizhao-choose-file'
LizhaoChooseFile.pickFiles({
accept: '.pdf,.doc,.docx,image/*',
multiple: true,
maxCount: 3,
maxSize: 10 * 1024 * 1024,
filename: 'upload-file',
success(files) {
console.log('pickFiles success', files)
},
fail(err) {
console.error('pickFiles fail', err)
}
})
示例(uni-app x)
import * as LizhaoChooseFile from '@/uni_modules/lizhao-choose-file'
LizhaoChooseFile.pickFile({
accept: '.pdf,.docx',
maxSize: 5 * 1024 * 1024,
success(file) {
console.log('pickFile success', file)
},
fail(err) {
console.error('pickFile fail', err)
}
})
注意事项
- 页面销毁前若仍有文件选择流程,建议在业务侧避免重复触发。
- 小程序与 Web 的文件路径通常是临时路径,不保证长期可用。
filename只改返回结果中的name/ext,不会修改用户原始文件本体。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6482
赞赏 5
下载 11770886
赞赏 1911
赞赏
京公网安备:11010802035340号