更新记录
1.2.3(2026-07-27)
-优化加密包安全语法
1.2.2(2026-07-25)
-优化Android 鸿蒙 和IOS的交互体验以及更能增强,以及配置更新
1.2.1(2026-07-25)
-优化Android 鸿蒙 和IOS的交互体验以及更能增强
查看更多平台兼容性
uni-app(4.18)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | 5.0 | 14 | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | - | - |
uni-app x(4.18)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | 5.0 | 14 | √ | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| √ | × | × |
ly028-filepicker
uni-app / uni-app x UTS 原生文件选择插件:目录层级浏览、扩展名分类、类型分组;单选/多选、搜索、排序、已选清单、图片预览;支持 Android 11/12/13+、iOS、HarmonyOS。
统一前端 API:
extensions+maxCount即可。Android 提供自定义选取页(含系统相册快捷入口);iOS / 鸿蒙按扩展名自动走相册或系统文件选择器。
点击下载体验
扫码体验
平台支持
| 工程类型 | Android | iOS | HarmonyOS |
|---|---|---|---|
| uni-app App | ✅ | ✅ | ✅ |
| uni-app x App | ✅ | ✅ | ✅ |
| 能力 | Android | iOS | HarmonyOS |
|---|---|---|---|
| 自定义文件选取页 | ✅ | — | — |
| 系统相册入口 | ✅(顶栏「相册」) | ✅(PHPicker) | ✅(PhotoViewPicker) |
| 系统文件选择器 | — | ✅(Files) | ✅(Document / Audio) |
| 按 extensions 自动路由 | 自定义页 + 相册按钮显隐 | ✅ 相册 / Files / 菜单 | ✅ 相册 / 音频 / 文件 / 菜单 |
| 目录层级浏览 | ✅ | — | — |
| 类型分组 Tab | ✅ | — | — |
| 单选/多选/数量限制 | ✅ | ✅ | ✅ |
| 扩展名过滤 | ✅ | ✅ | ✅ |
| 搜索/排序/已选清单 | ✅(页内) | 系统提供 | 系统提供 |
| 图片点击预览 | ✅ | — | — |
| 文案/主题自定义 | ✅ | —(系统 UI) | —(系统 UI) |
- 环境:uni-app 建议 HBuilderX 3.7.2+;uni-app x 建议 HBuilderX 4.0+(鸿蒙建议 4.31+)
- 调试:原生 UTS 插件必须进入 自定义调试基座 或 正式云打包包体 才能运行;普通标准基座不包含本插件原生代码
三端行为说明(重要)
前端同一套 pickFiles 参数;不要为 iOS/鸿蒙单独传平台参数。
extensions 情况 |
Android | iOS | HarmonyOS |
|---|---|---|---|
| 含图片或视频 | 自定义列表;顶栏显示「相册」,点相册进系统相册,选完直接回调 | 仅媒体 → 系统相册;仅文档 → Files;混合/空 → 弹「相册 / 文件」 | 同左思路:仅媒体 → 相册;仅音频 → 音频选择器;仅文档 → 文件;混合/空 → 「相册 / 文件」 |
| 仅音频等非图视频 | 自定义列表(无相册按钮) | Files | 音频选择器或文件选择器 |
browseMode / groups / sortType / theme |
生效 | 忽略 | 忽略 |
strings |
自定义页文案(含 btnAlbum) |
忽略 | 忽略 |
快速开始
1. 安装
在 DCloud 插件市场 搜索 ly028-filepicker,导入到项目 uni_modules 后:
- 在插件详情页 试用/购买 并绑定当前 AppID 工程
manifest.json配置 AppID- 制作自定义调试基座 → 运行到自定义基座(真机)
2. uni-app 调用(Vue2/Vue3)
推荐使用 JS 封装(已兼容 App Android / iOS / 鸿蒙):
import LyFilePicker from '@/uni_modules/ly028-filepicker/js_sdk/index.js'
// Android:自定义分组页;iOS/鸿蒙:按 extensions 进相册或文件
const ret = await LyFilePicker.pickFiles({
browseMode: LyFilePicker.BROWSE_GROUP, // 仅 Android 有效
maxCount: 10,
extensions: 'png,jpg,pdf,docx,zip',
sortType: 3 // 仅 Android 有效
})
if (ret.cancelled) {
console.log('用户取消')
} else if (ret.ok && ret.data) {
// 上传请优先使用 absolutePath(本地可读路径)
ret.data.forEach((f) => console.log(f.name, f.absolutePath, f.sizeText))
}
3. uni-app x / UTS 直接调用
import { pickFiles } from '@/uni_modules/ly028-filepicker'
pickFiles({
browseMode: 2,
maxCount: 9,
extensions: 'png,jpg,jpeg,pdf,docx,zip'
}, (ret) => {
if (ret.ok) {
console.log(ret.data)
}
})
4. 浏览模式 browseMode(仅 Android)
| 值 | 常量 | 说明 |
|---|---|---|
| 0 | BROWSE_DIRECTORY |
按文件夹层级进入(内部存储 / Download / Documents 等) |
| 1 | BROWSE_CLASSIFY |
按 extensions 扫描媒体与常见目录下的文件 |
| 2 | BROWSE_GROUP |
顶部分组胶囊(图片/视频/音频/文档…),可 groups 自定义 |
API
pickFiles(options) → Promise<LyPickResult>(js_sdk)
| 参数 | 类型 | 默认 | 平台 | 说明 |
|---|---|---|---|---|
| browseMode | Number | 2 |
Android | 0 目录 / 1 分类 / 2 分组 |
| maxCount | Number | 9 |
全平台 | 最大可选数;1 为单选 |
| extensions | String | Array | 见 DEFAULT_OPTIONS |
全平台 | 允许扩展名;同时影响 iOS/鸿蒙入口路由与 Android 相册按钮是否显示 |
| groups | Array | 内置 6 组 | Android | { name, fileTypes[] },browseMode=2 时有效 |
| strings | Object | 中文默认 | Android | 界面文案,可做 i18n(含 btnAlbum) |
| theme | Object | 靛紫主题 | Android | primaryColor、headerGradientStart 等 |
| sortType | Number | 0 |
Android | 0~7,见下表 |
sortType(仅 Android)
| 值 | 含义 |
|---|---|
| 0 | 名称升序 |
| 1 | 名称降序 |
| 2 | 时间升序 |
| 3 | 时间降序 |
| 4 | 大小升序 |
| 5 | 大小降序 |
| 6 | 类型升序 |
| 7 | 类型降序 |
返回结果 LyPickResult
| 字段 | 类型 | 说明 |
|---|---|---|
| ok | Boolean | 是否成功选到文件 |
| cancelled | Boolean | 用户取消(可选) |
| data | Array | 选中文件列表(成功时) |
| errMsg | String | 失败信息(可选) |
返回 data[] 单项
| 字段 | 类型 | 说明 |
|---|---|---|
| name | String | 文件名 |
| path | String | 路径(多数场景与 absolutePath 相同) |
| absolutePath | String | 本地绝对路径(上传常用)。Android 从系统相册选出的文件会先拷贝到应用缓存再返回,不会把 content:// 当作绝对路径 |
| contentUri | String | Android 可选:原始 content://(相册场景可能保留;上传请用 absolutePath) |
| mimeType | String | MIME 或扩展名 |
| size | Number | 字节 |
| sizeText | String | 如 42.27KB |
| modifiedTime | Number | 修改时间戳(可选) |
| thumbPath | String | 缩略图路径(可选) |
UTS 回调写法
import { pickFiles } from '@/uni_modules/ly028-filepicker'
pickFiles({ browseMode: 0, maxCount: 5 }, (ret) => {
console.log(ret)
})
国际化示例
文案自定义仅 Android 自定义页面 生效;iOS / HarmonyOS 使用系统 UI,跟随系统语言。
LyFilePicker.pickFiles({
strings: {
title: 'Select files',
btnConfirm: 'Done',
btnCancel: 'Cancel',
btnAlbum: 'Album', // Android 顶栏相册按钮
selectedCount: 'Selected %1$s / %2$s',
searchHint: 'Search file name',
groupImages: 'Images',
groupVideos: 'Videos',
groupAudio: 'Audio',
groupDocuments: 'Documents',
groupArchives: 'Archives',
groupApps: 'Apps'
}
})
manifest 权限建议
Android(按 targetSdk 自动适配,建议在 manifest 勾选):
READ_EXTERNAL_STORAGE(Android 12 及以下)READ_MEDIA_IMAGES/READ_MEDIA_VIDEO/READ_MEDIA_AUDIO(Android 13+)- Android 11+ 若需扫描更多目录,可能还需引导「所有文件访问」权限(插件内会提示)
iOS:相册选用系统 PHPicker,一般无需额外相册权限声明;Files 由系统授权。
HarmonyOS:读取用户所选文件 / 相册,按 module.json5 申请媒体与文件相关能力。
常见问题
Q:没有弹出选择页?
A:是否使用 自定义调试基座;是否在真机 App 环境(非 H5)。
Q:Android 11/12 列表为空?
A:确认已授权存储/媒体权限;部分机型需将文件放在 Download、Documents 或相册目录。
Q:iOS / 鸿蒙为何不是同款自定义 UI?
A:系统沙盒限制。两端使用系统相册 + 系统文件选择器,回调字段与 Android 对齐;browseMode / groups / sortType / theme 仅 Android 生效。
Q:iOS / 鸿蒙怎么选相册里的照片和视频?
A:extensions 只含图片/视频时会直接进系统相册;与文档混合或未限制类型时,会先弹出「相册 / 文件」菜单。
Q:Android 顶栏「相册」什么时候出现?
A:当 extensions 包含任意图片或视频扩展名时显示。点选后进系统相册,确认后直接返回结果,无需再点「完成」。
Q:相册返回的路径和列表里不一样?
A:上传请统一用 absolutePath。Android 系统相册结果已拷贝为应用缓存下的本地路径;contentUri 仅为原始 URI 参考字段。
Q:大相册下加载很久或进入后自动关闭?
A:多见于图片数量极多(数千张以上)的设备。1.0.7+ 已将过滤/排序移至后台线程,并分页展示列表、限制缩略图并发解码。请更新插件后 重新制作自定义调试基座或云打包。
Q:如何减轻扫描压力?
A:尽量指定 extensions、使用 browseMode=1 或缩小 groups 中 fileTypes,避免在「图片」分组下扫描全部相册。
Q:连续快速点击选文件没反应?
A:已防止重复打开选择器;请等待上一次选择结束(完成/取消)后再调用 pickFiles。
Q:Android 选择页顶部有白条、与顶栏颜色不一致?
A:1.1.4+ 已默认沉浸式状态栏。请更新插件并重新制作自定义基座或云打包。若 theme.headerGradientStart 很浅,可改用较深顶栏色以保证状态栏图标对比度。
更新日志
点击下载体验
扫码体验

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