更新记录
1.0.0(2026-10-13)
- 首次发布。
- 新增
chooseFile 文件选择接口,支持选择任意文件并返回详细信息。
- 返回信息包含:名称、扩展名、MIME 类型、大小、文件分类、图片宽高、视频时长、最后修改时间。
- 支持多选,
count 控制数量,超出部分自动截断。
- 支持 Android / iOS / Web / HarmonyOS 四端。
- 统一错误码:9011001 参数错误、9011002 用户取消、9011003 读取文件信息失败、9011004 不支持的文件类型、9011005 平台不支持。
平台兼容性
uni-app(5.0)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(5.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
√ |
√ |
× |
其他
| 多语言 |
暗黑模式 |
宽屏模式 |
蒸汽模式 |
| × |
× |
× |
√ |
hy-file-picker 文件选择器
跨平台文件选择 UTS 插件,基于各端原生能力实现文件选择,并返回名称、扩展名、MIME 类型、大小、文件分类、图片宽高、音视频时长、最后修改时间等详细信息,同一套 API 适配 Android / iOS / Web / HarmonyOS。
平台支持
| 平台 |
支持 |
实现方式 |
| Android |
√ |
ACTION_OPEN_DOCUMENT(SAF)+ ContentResolver + BitmapFactory / MediaMetadataRetriever |
| iOS |
√ |
UIDocumentPickerViewController + UniformTypeIdentifiers + AVFoundation |
| Web |
√ |
input[type=file] + Image / video / audio |
| HarmonyOS |
√ |
DocumentViewPicker + @ohos.file.fs + ImageSource / AVMetadataExtractor |
小程序端暂不支持。
iOS 需在 macOS 环境下编译验证。
安装
将 hy-file-picker 目录放入项目的 uni_modules 下即可,无需手动注册(uni_modules 自动引入)。
使用
uni-app x
import { chooseFile } from '@/uni_modules/hy-file-picker'
chooseFile({
count: 1,
type: 'all',
success: (res) => {
console.log('选择成功', res.tempFilePaths, res.files)
},
fail: (err) => {
console.error('选择失败', err.errCode, err.errMsg)
},
complete: (res) => {
console.log('调用结束', res)
}
})
uni-app (Vue2 / Vue3)
import { chooseFile } from '@/uni_modules/hy-file-picker'
chooseFile({
count: 1,
type: 'all',
success(res) {},
fail(err) {},
complete(res) {}
})
API
chooseFile(options)
拉起系统文件选择器选择文件。
| 参数 |
类型 |
必填 |
说明 |
| count |
number |
否 |
最多可选文件数量,默认 1;大于 1 时支持多选。系统文件选择器(鸿蒙除外)不提供数量硬限制,超出部分自动截断,仅返回前 count 个 |
| type |
string |
否 |
文件类型过滤,可选 'all'(默认)/ 'image' / 'video' / 'audio' / 'file' |
| extensions |
string[] |
否 |
扩展名过滤(不含点,如 ['pdf','docx']),默认不限制。仅 Android / Web 平台支持,其他平台忽略 |
| success |
function |
否 |
成功回调 |
| fail |
function |
否 |
失败回调 |
| complete |
function |
否 |
结束回调(成功、失败均执行) |
成功回调 res
| 字段 |
类型 |
说明 |
| tempFilePaths |
string[] |
所选文件的路径数组 |
| files |
FileInfo[] |
所选文件的详细信息数组 |
FileInfo
| 字段 |
类型 |
说明 |
| name |
string |
文件名(含扩展名),如 report.pdf |
| path |
string |
文件路径。App / 鸿蒙为应用缓存目录下的本地绝对路径;Web 为 objectURL(blob: 开头) |
| size |
number |
文件大小,单位字节 |
| extension |
string |
扩展名(不含点,小写),如 pdf;无扩展名为空字符串 |
| mimeType |
string |
MIME 类型,如 application/pdf;未知为空字符串 |
| type |
string |
文件分类:image / video / audio / file |
| isDirectory |
boolean |
是否为目录(当前选择结果均为 false) |
| width |
number |
图片宽度(px),非图片为 0 |
| height |
number |
图片高度(px),非图片为 0 |
| duration |
number |
音视频时长(秒),非音视频为 0 |
| lastModified |
number |
最后修改时间(时间戳,毫秒),无法获取为 0 |
错误码
| errCode |
说明 |
| 9011001 |
参数错误 |
| 9011002 |
用户取消选择 |
| 9011003 |
读取文件信息失败 |
| 9011004 |
不支持的文件类型 |
| 9011005 |
当前平台不支持该能力 |
注意事项
- App / 鸿蒙端会将选中文件复制到应用缓存目录,
path 返回该缓存文件的本地绝对路径,如需长期保留请自行转存。
extensions 仅 Android / Web 平台生效;iOS 通过扩展名推断 UTType 过滤,鸿蒙通过后缀名过滤(能力受系统限制)。
count 为期望的最大数量:系统文件选择器(鸿蒙除外)不提供数量硬限制,若用户选择的文件数量超过 count,插件仅返回前 count 个,其余自动忽略。
- Web 端用户取消时会触发
cancel 事件(现代浏览器支持),部分旧浏览器可能无回调。
- 未配置鸿蒙应用包名与签名证书时,仅能编译打包,无法安装到设备运行。
更新日志
见 changelog.md