更新记录
1.0.1(2026-07-07)
发版本
1.0.0(2026-07-07)
发版
平台兼容性
uni-app(5.14)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.14)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
jiabo-uts-file-kit
赛博老李三端文件选择 UTS 插件,提供 Android / iOS / HarmonyOS 统一文件选择 API。
特性
| 功能 | Android | iOS | HarmonyOS |
|---|---|---|---|
| chooseFile 系统文件选择 | SAF ACTION_OPEN_DOCUMENT | UIDocumentPickerViewController | @ohos.file.picker DocumentViewPicker |
| 多选 | 支持 | 支持 | 支持 |
| MIME 类型过滤 | 支持 | 支持 UTType | 支持常见类型映射 |
| 扩展名过滤 | 支持扩展名到 MIME 映射 | 支持 UTType extension 映射 | 支持 fileSuffixFilters |
| getFileInfo | ContentResolver / java.io.File | NSFileManager | @ohos.file.fs.stat |
| normalizePath | content:// / file:// / unifile:// | file:// | file:// / unifile:// |
| buildUploadPayload | 上传参数 + 文件元数据 | 上传参数 + 文件元数据 | 上传参数 + 文件元数据 |
| uploadFile 上传辅助 | 路径归一化 | 路径归一化 | 路径归一化 |
| mock 模式 | 支持 | 支持 | 支持 |
安装
在 uni-app 项目中,将 jiabo-uts-file-kit 复制到 uni_modules/ 目录下,或通过插件市场安装。
导入
import {
chooseFile,
getFileInfo,
normalizePath,
setFilePickBehavior,
getFilePickBehavior,
buildUploadPayload,
uploadFile
} from '@/uni_modules/jiabo-uts-file-kit'
API
chooseFile(options)
打开系统文件选择器。
chooseFile({
multiple: true,
count: 5,
mimeTypes: ['application/pdf', 'image/*'],
extensions: ['pdf', 'jpg', 'png'],
success(res) {
console.log('选中文件:', res.files)
},
fail(res) {
console.error('选择失败:', res.message)
},
complete(res) {
console.log('选择完成:', res.code)
}
})
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| multiple | boolean | false | 是否允许多选 |
| count | number | 1/10 | 多选时最大可选数量 |
| mimeTypes | string[] | ['/'] | MIME 类型过滤 |
| extensions | string[] | - | 扩展名过滤 |
| copyToCache | boolean | false | Android 可将 content:// 复制到缓存路径 |
| mock | boolean | false | 使用 mock 数据 |
| success | callback | - | 成功回调 |
| fail | callback | - | 失败回调 |
| complete | callback | - | 完成回调 |
getFileInfo(options)
读取指定路径或 URI 的文件信息。
getFileInfo({
path: 'content://...',
success(res) {
console.log(res.file)
}
})
normalizePath(path)
归一化 file://、unifile:// 等路径。
buildUploadPayload(options)
从路径、文件名、MIME 类型生成统一上传参数。
const payload = buildUploadPayload({
path: 'content://...',
name: 'report.pdf',
mimeType: 'application/pdf'
})
uploadFile(options)
上传辅助函数。当前版本负责路径归一化和参数构建,并通过 success/fail/complete 回调返回统一结构,业务侧可将结果传给 uni.uploadFile。
setFilePickBehavior / getFilePickBehavior
切换或查询文件选择行为。
setFilePickBehavior('mock')
setFilePickBehavior('system')
const mode = getFilePickBehavior()
平台说明
Android
- 使用
Intent.ACTION_OPEN_DOCUMENT content://URI 可直接保留给上传链路getFileInfo使用ContentResolver.query(OpenableColumns)获取名称、大小和 MIME 类型extensions会映射为 MIME 类型传给系统选择器,选择结果会按count兜底截断- 不声明
READ_EXTERNAL_STORAGE、READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO
iOS
- 使用
UIDocumentPickerViewController - 使用
asCopy: true,让应用获取可访问副本 - 支持 MIME 与扩展名到
UTType的映射 - 读取文件大小时通过
NSFileManager查询
HarmonyOS
- 使用
@ohos.file.picker.DocumentViewPicker - 支持
maxSelectNumber与fileSuffixFilters - 使用
@ohos.file.fs.statSync读取沙箱路径文件大小 - 选择器 URI 会原样返回给业务上传链路
本地测试
node scripts/check-structure.mjs
node scripts/test-plugin.mjs
test-plugin.mjs 会校验三端 API 导出、Android 权限声明、非三端平台未声明状态,并调用 HBuilderX 自带 UTS 编译器验证 Android Kotlin、iOS Swift、Harmony ArkTS/ETS 转译。
上架说明
- 填写
package.json中的repository和dcloudext.contact - 按需调整
sale中的价格 - 删除
.DS_Store等系统文件 - 准备 Android、iOS、HarmonyOS 三端运行截图和隐私说明
版本历史
- 1.0.0 - Android SAF 文件选择 + iOS UIDocumentPicker + HarmonyOS DocumentViewPicker,三端完整实现
- 0.1.0 - 首版 Android picker 入口 + iOS/HarmonyOS 初始实现 + mock 模式

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(0)
下载 6
赞赏 0
下载 12404934
赞赏 1930
赞赏
京公网安备:11010802035340号