# file-picker
### 开发文档
[UTS 语法](https://uniapp.dcloud.net.cn/tutorial/syntax-uts.html)
[UTS API插件](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
[UTS 组件插件](https://uniapp.dcloud.net.cn/plugin/uts-component.html)
[Hello UTS](https://gitcode.net/dcloud/hello-uts)
# 一、使用
### 1.在页面引入
```js
1.重要(安卓):使用前先勾选文件读取权限,具体步骤:打开manifest.json,选择App权限配置,在Android权限配置中勾选
2.若HBuilderX中没有uts编译运行插件,在第一次运行时会自动下载.
3.如果使用出错,请优先检查HBuilderX是否成功安装了uts编译运行插件,并检查HBuilderX是否更新到了最新版
4.本插件已做权限检查(安卓),支持跳转到APP权限设置页
5.支持设置Mime类型(安卓),实现限制文件类型选取
6.支持访问指定目录(安卓),方便用户在指定目录快速选取
import filePicker from "@/uni_modules/file-picker"
```
### 2.唤起文件选择
```js
filePicker({
scope:"/Download", //具体配置说明见下方 【filePicker可配置参数说明】
permission: false,
//实践:
//1.用户点击选择文件,调用本选取文件插件,
//2.插件会自动检查是否有文件读取权限(没有会弹窗让用户选择)
//3.已有权限(或用户点击了同意),直接弹出文件选择
//4.没有权限(或用户点击了拒绝),配置了permission:true,会自动跳转到当前APP的权限设置页面,如果需要更好的用户体验(跳转前给用户一个帮助说明或图文操作步骤),请配置permission:false,并在fail回调中处理提示用户的逻辑,用户确认后再次调用本插件,这次请设置permission:true
mimetype: "*/*",
success(res) {
console.warn('选择返回',res);
},
fail(err) {
console.log(err);
}
})
```
| filePicker可配置参数说明 | | | |
| --- | --- | --- | --- |
| 属性 | 类型 | 说明 | 兼容性 |
| scope | string | 【可选】访问指定目录,不需要则不要声明该属性,默认显示顶级目录
例:
- /DCIM/Camera 相机
- /Download 下载
| 仅安卓 (部分目录由于安全策略无法访问,如"Android/data",请自行测试,可以参考自己手机的目录进行设置) |
| permission | Boolean | 【可选】当读取文件的权限被用户拒绝,是否自动跳转到当前APP的权限设置页面,默认为false(不跳转) | 仅安卓 |
| mimetype | string | 【必填】限制选取的文件类型,不限制需设为"*/*",更多类型请参照Mime类型对照表,暂时仅支持设置单个类型
例:
- image/* (图片)
- text/plain (文本)
- application/vnd.openxmlformats-officedocument.wordprocessingml.document (word)
| 仅安卓 |
| action | string | 【可选】打开的行为配置,目前暂时只支持暂时'openWithFile','openWithFile'行为用于获取用户最近一次在其他应用选择本应用作为打开方式选择的文件 | 仅安卓 |
| filePicker返回值说明 | | | |
| --- | --- | --- | --- |
| 属性 | 类型 | 说明 | 兼容性 |
| code | string | 状态码:
- 0 成功
- 1001 未授权文件读取权限(仅安卓)
- 1002 文件不存在(仅安卓)
- 1004 用户取消了选择(仅ios) - 1005 文件选取出错(仅安卓)
|
|
| filePath | string | 选取的文件的绝对路径,可以直接提供给uniapp的上传等api使用(使用该路径时,请确认自己的项目有读取访问文件的权限) | |
| fileName | string | 选取的文件的名称 | |
| fileSize | string | 选取的文件的大小(单位:字节) | |
| fileExt | string | 选取的文件的后缀名 | 仅安卓 |
| errMsg | string | 选择完成后的状态信息 | |
| detail | string | 具体的文字说明 | |
# 兼容性说明
### 目前仅测试了部分真机(安卓13.0 、ios13),其他系统版本兼容性未知,请自行测试.
# 问题反馈与收集
```js
本uts插件为开放源代码插件,可自行在 uni_modules->file-picker->utssdk 直接修改对应平台的源代码,以满足个性化需求
# 已上线[原生插件]版文件选取,同样支持安卓和ios双端,支持更多功能
目前收集的问题(Q&A):
1.文件查找失败:'@/uni_modules/file-picker' 大概率你是在浏览器上打开的吧?运行请选择【运行到手机或模拟器】,本插件仅用于安卓和ios的APP使用,不支持任何h5,不支持任何浏览器运行。
2.(已解决,ios,应该?)Error: undefined class: UTSSDKModulesLemonFilePickerIndexSwift
遇到问题2,大概率是你用的window电脑,直接用基本调试基座运行的。
一、官方文档说明如下:
运行到ios平台,uts插件编译需要XCode环境,因此在mac电脑安装了XCode工具时支持直接使用标准基座真机运行。
在windows电脑或者mac电脑没有安装XCode工具时,需要提交云端打包生成自定义基座后才能调用uts插件
二、简单来说:
1.你是windows电脑?请点击 运行->原生APP-云打包->选择ios(ipa),填写相关苹果证书配置,选择打自定义基座调试包。打包完成后,运行时选择使用自定义基座运行
2.你是mac电脑?
2.1 有xcode环境?参考这个[xcode配置](https://uniapp.dcloud.net.cn/tutorial/run/uts-development-ios.html)配置后,直接标准基座运行
2.2 没有xcode环境?安装完成后参考2.1,不想安装参考1
3.(已解决,安卓)u盘文件无法选择
4.(已解决,安卓)文件类型筛选
5.(已解决,安卓)权限检查
6. HbuilderX编辑器报错 xxx与uts相关的模块未找到,请重新下载最新的HbuilderX再运行
```
# 插件最初由 [109***@qq.com](https://ext.dcloud.net.cn/publisher?id=277942) 发布,原名是lemon-filePicker。可能原作者觉得此插件不实用所以将它下架了,鄙人使用这插件再过程中还有一定的价值,所以我就将它改名为file-picker 并重新提交插件市场。