更新记录
1.2.0(2026-07-09)
初始版本
平台兼容性
uni-app
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
× |
× |
√ |
√ |
√ |
√ |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
5.0 |
12 |
× |
- |
nk-file-picker 文件选择器
一个基于 UTS 开发的原生文件选择插件,可以让用户选择手机上各种类型的文件并返回本地临时路径,方便后续上传或处理。
- ✅ 支持类型:图片 / 视频 / 音频 / PDF / Word / Excel / PPT / 纯文本 / 压缩包 / 常用文档 / 全部类型
- ✅ 支持自定义文件后缀白名单(如
dwg、psd)
- ✅ 支持多选
- ✅ 同时兼容 Android 与 iOS
- ✅ 返回的临时路径可直接用于
uni.uploadFile
平台说明:Android 使用系统「存储访问框架 SAF」(ACTION_OPEN_DOCUMENT),iOS 使用系统文件选择器 UIDocumentPickerViewController,均为系统原生选择界面,无需额外后台权限。
一、引入插件
// 组合式写法
import { chooseFile } from '@/uni_modules/nk-file-picker'
或直接使用(UTS 插件会自动注册到 uni 命名空间视配置而定,推荐使用上面的 import 写法)。
二、API
chooseFile(options)
选择一个或多个文件。
options 参数
| 属性 |
类型 |
必填 |
默认值 |
说明 |
| types |
ChooseFileType[] |
否 |
['all'] |
要选择的文件类型分类,可多选 |
| extensions |
string[] |
否 |
- |
自定义文件后缀白名单,用于扩展 types 未覆盖的格式 |
| count |
number |
否 |
1 |
最多可选择的文件数量,大于 1 时开启多选 |
| success |
(res) => void |
否 |
- |
选择成功回调 |
| fail |
(res) => void |
否 |
- |
选择失败/取消回调 |
| complete |
(res) => void |
否 |
- |
结束回调(成功或失败都会执行) |
ChooseFileType 可选值
| 值 |
说明 |
| all |
所有类型文件(默认) |
| image |
图片:png/jpg/gif/webp 等 |
| video |
视频:mp4/mov/avi 等 |
| audio |
音频:mp3/wav/aac 等 |
| pdf |
PDF 文档 |
| word |
Word:doc/docx |
| excel |
Excel:xls/xlsx |
| ppt |
PPT:ppt/pptx |
| text |
纯文本:txt |
| zip |
压缩包:zip/rar/7z |
| document |
常用文档合集:pdf + word + excel + ppt + text |
success 返回结果 ChooseFileSuccess
| 属性 |
类型 |
说明 |
| tempFilePaths |
string[] |
所有已选文件的临时路径数组 |
| tempFiles |
ChooseFileItem[] |
所有已选文件的详细信息数组 |
ChooseFileItem
| 属性 |
类型 |
说明 |
| tempFilePath |
string |
文件临时路径(本地缓存目录) |
| name |
string |
文件名(含后缀) |
| size |
number |
文件大小(字节) |
| extension |
string |
文件后缀(小写,不含点,如 pdf) |
错误码
| errCode |
说明 |
| 9010001 |
用户取消了选择 |
| 9010002 |
文件读取/复制失败 |
| 9010003 |
设备上无可用的文件管理器应用 |
三、使用示例
1. 选择任意类型文件
import { chooseFile } from '@/uni_modules/nk-file-picker'
chooseFile({
success: (res) => {
console.log('选择成功', res.tempFiles)
},
fail: (err) => {
console.log('选择失败', err.errCode, err.errMsg)
}
})
2. 只选择图片或视频
chooseFile({
types: ['image', 'video'],
success: (res) => {
console.log(res.tempFilePaths)
}
})
3. 选择常用文档(PDF / Word / Excel / PPT / txt)
chooseFile({
types: ['document'],
success: (res) => {
res.tempFiles.forEach((f) => {
console.log(f.name, f.extension, f.size)
})
}
})
4. 多选(最多 9 个)
chooseFile({
types: ['image'],
count: 9,
success: (res) => {
console.log('共选择了', res.tempFiles.length, '个文件')
}
})
5. 自定义后缀
chooseFile({
extensions: ['dwg', 'psd'],
success: (res) => {
console.log(res.tempFiles)
}
})
6. 选择后上传
chooseFile({
types: ['document'],
success: (res) => {
const file = res.tempFiles[0]
uni.uploadFile({
url: 'https://your-server.com/upload',
filePath: file.tempFilePath,
name: 'file',
success: (uploadRes) => {
console.log('上传成功', uploadRes)
}
})
}
})
四、注意事项
- 本插件为 UTS 原生插件,仅在 App(Android / iOS)平台生效,需使用自定义基座运行/打包。
count > 1 时开启多选:
- iOS 系统文件选择器多选为「单击打勾」。
- Android 在只选图片/视频(
types 仅含 image/video)且系统为 Android 13(API 33)+ 时,自动使用系统相册选择器 Photo Picker,多选为「单击打勾」;其它类型(PDF/Word/压缩包等)走系统文件管理器(SAF),其多选需长按进入多选模式,这是系统交互限制,非插件问题。
- iOS 会将所选文件复制到 uniapp 沙盒的
_doc/uniapp_temp/ 目录,返回相对路径,plus.io 可直接访问。
- Android 会将所选文件复制到应用外部缓存目录,返回绝对路径。
五、开发文档
六、更新日志
1.2.0
- Android 端优化多选体验:只选图片/视频且系统为 Android 13+ 时,自动使用系统相册选择器 Photo Picker(单击即勾选多选)
1.1.0
- 由「仅支持 PDF」升级为「支持选择各种类型文件」
- 新增
chooseFile API,支持 types 分类、自定义后缀、多选
- 返回结构升级为
tempFiles / tempFilePaths
1.0.0