更新记录

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_STORAGEREAD_MEDIA_IMAGESREAD_MEDIA_VIDEOREAD_MEDIA_AUDIO

iOS

  • 使用 UIDocumentPickerViewController
  • 使用 asCopy: true,让应用获取可访问副本
  • 支持 MIME 与扩展名到 UTType 的映射
  • 读取文件大小时通过 NSFileManager 查询

HarmonyOS

  • 使用 @ohos.file.picker.DocumentViewPicker
  • 支持 maxSelectNumberfileSuffixFilters
  • 使用 @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 转译。

上架说明

  1. 填写 package.json 中的 repositorydcloudext.contact
  2. 按需调整 sale 中的价格
  3. 删除 .DS_Store 等系统文件
  4. 准备 Android、iOS、HarmonyOS 三端运行截图和隐私说明

版本历史

  • 1.0.0 - Android SAF 文件选择 + iOS UIDocumentPicker + HarmonyOS DocumentViewPicker,三端完整实现
  • 0.1.0 - 首版 Android picker 入口 + iOS/HarmonyOS 初始实现 + mock 模式

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 使用 SAF(ACTION_OPEN_DOCUMENT)系统文件选择器,无需额外权限声明;iOS 使用 UIDocumentPickerViewController;HarmonyOS 使用 @ohos.file.picker。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

仅读取用户主动选择的文件路径、名称、大小、MIME 类型,不扫描用户文件库。不上传、不缓存用户文件内容。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无广告,无引流弹窗。

暂无用户评论。