更新记录
1.0.2(2026-07-27)
1.0.1(2026-06-05)
支持Android、iOS、鸿蒙三端获取手机中文件操作
平台兼容性
uni-app(5.0)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| - |
- |
- |
- |
- |
- |
5.0 |
12 |
9 |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(5.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
5.0 |
12 |
9 |
- |
szy-filepath 三端文件选择器
iOS · Android · HarmonyOS · 三端统一 API,选择设备文件获取路径、名称、大小等信息
平台支持
| 平台 |
实现方式 |
特性 |
| 🍎 iOS |
UIDocumentPickerViewController |
多选、文件信息 |
| 🤖 Android |
Intent.ACTION_OPEN_DOCUMENT |
多选、文件信息 |
| 🦕 HarmonyOS |
DocumentViewPicker |
多选、最大50文件 |
安装
插件市场搜索 szy-filepath,点击安装
快速开始
import { getFilePath } from '@/uni_modules/szy-filepath'
getFilePath({
callback: (result) => {
if (result.length === 0) {
console.log('用户取消选择或未选中文件')
return
}
result.forEach(file => {
console.log('文件:', file.fileName)
console.log('路径:', file.filePath)
console.log('大小:', file.fileSize)
console.log('后缀:', file.fileExtension)
})
}
})
API 参考
getFilePath(options)
| 参数 |
类型 |
说明 |
options.callback |
(result: FileResult) => void |
选择完成回调 |
返回值 FileResultItem
| 字段 |
类型 |
说明 |
fileURL |
string |
文件 URI |
filePath |
string |
文件路径 |
fileName |
string |
文件名 |
fileSize |
string |
文件大小(字节) |
fileExtension |
string |
文件扩展名 |
HarmonyOS 专项说明
Context 机制
插件内置双通道 Context 获取,无需在 EntryAbility 中调用 setGlobalContext:
| 通道 |
方式 |
说明 |
| 主通道 |
UTSHarmony.onAppAbilityWindowStageCreate → Window 引用 |
调用时从 Window 获取原生 Context |
| 备用通道 |
setGlobalContext(UIAbilityContext) |
兼容手动注入场景 |
⚠️ 关键实现细节:UTSHarmony 回调中仅存储 Window 引用,不立即取 Context(此时 UIContent 尚未加载,返回 nullptr)。getHostContext() 在用户点击按钮时才执行,此时页面已渲染完毕。
若无法自动获取,首次使用时需引导用户手动前往系统设置开启一次:
设置 → 应用 → 应用管理 → 找到本应用 → 权限 → 身体活动 → 开启
仅需操作一次,开启后传感器持续可用。
权限
插件 module.json5 声明了 READ_MEDIA 权限。DocumentViewPicker 通过系统选择器 UI 完成权限校验,无需手动申请。
已知限制
| 问题 |
说明 |
| 选择器未弹出 |
查看日志确认 Window 引用已保存;确保 App 完全启动后再调用 |
| 文件大小为 "0" |
HarmonyOS URI 无法直接获取文件大小 |
| 文件路径与 fileURL 相同 |
HarmonyOS 平台特性 |
故障排查
| 问题 |
可能原因 |
解决 |
| 鸿蒙选择器不弹出 |
Context 获取失败 |
确保 UTSHarmony 回调已触发,日志含 Window 引用已保存 |
| iOS 无回调 |
用户取消 |
callback([]) 正常行为 |
| Android 无回调 |
权限问题 |
检查 READ_EXTERNAL_STORAGE 权限 |
版本历史
1.0.2 (2026-07-27)
- 🦕 鸿蒙 Context 自给 — UTSHarmony Window 引用模式,
getHostContext() 延迟调用
- 🏗️ 双通道保底 — 主通道 UTSHarmony + 备用通道 setGlobalContext
- 🐛 修复选择器秒返空结果 — Context 获取时序修复
- 🐛 模块权限补齐 — module.json5 补充 READ_MEDIA 权限声明
1.0.1 (2026-06-05)
- 🎉 首次三端发布
- ✅ iOS / Android / HarmonyOS 文件选择器
- ✅ 三端统一 API,支持多选
许可
MIT License — 作者: szy