更新记录
1.0.0(2025-07-05)
Android 文件读取插件
API 一览表
API名称 | 参数 | 返回值 | 简要说明 |
---|---|---|---|
getDICMDir | offset?: number | null, limit?: number | null | Array |
获取相册目录下的图片和视频,支持分页,视频带封面 |
uriToBase64 | url: string | string | 将文件 uri 转为 base64 字符串 |
getDocDir | filesType?: Array |
Array |
获取非图片和视频的文件,可按 MIME Type 过滤 |
startLocalImageServer | port: number | void | 启动本地图片 HTTP 服务 |
stopLocalImageServer | 无 | void | 关闭本地图片 HTTP 服务 |
使用说明
插件只提供API无具体界面,适用于需要高度个性化的界面设计,可适用插件提供的api获取数据进行渲染页面
示例:
import {
getDICMDir,
uriToBase64,
startLocalImageServer,
getDocDir
} from '@/uni_modules/hsw-file-upload'
import {ref} from 'vue'
const applicationType = ref('image/gif,audio/aac,video/mp4')
const port = ref(8080)
//开启本地服务 这个必须开启
startLocalImageServer(port.value)
// 获取指定类型文件
const types = applicationType.value.split(',')
const uris = getDocDir(types)
filesList.value = uris
console.log('指定文件类型:', applicationType.value, 'urls:', uris);
// 获取相册文件
const uris = getDICMDir(0, 10)
mediaList.value = uris
console.log('媒体类型:', mediaList.value);
// 例如上传选择的文件
uni.downloadFile({
url:"http://localhost:" + port.value + '/file?uri=' + uris[0].uri,
success: (res) => {
// 在此处可拿到下载后的文件 res.tempFilePath地址
// 然后拿到 res.tempFilePath 使用 uni.uploadFile 上传就行了
},
fail: (err) => {
console.log('err', err);
}
})
API 详细说明
#
1. 获取相册目录文件
getDICMDir(offset?: number | null, limit?: number | null): Array<DICMType>
- 参数
offset
:可选,分页起始位置,不传则获取全部limit
:可选,分页数量,不传则获取全部
- 返回
Array<DICMType>
,每项包含图片/视频的 uri、name、mimeType,视频还包含封面 base64 字符串(cover 字段)
示例:
// 获取全部
const all = getDICMDir();
// 分页获取(如每页20条,第2页)
const page2 = getDICMDir(20, 20);
2. 将文件 uri 转为 base64
uriToBase64(url: string): string
- 参数
url
:文件的 content uri
- 返回
- base64 字符串(带 data:image/jpeg;base64, 前缀)
示例:
const base64 = uriToBase64('content://media/external/images/media/123');
3. 获取任意类型文件
getDocDir(filesType?: Array<string> | null): Array<FileInfo>
- 参数
filesType
:可选,MIME Type 数组,指定要获取的文件类型。不传则返回所有非图片和视频类型的文件。
- 返回
Array<FileInfo>
,每项包含 uri、name、mimeType
示例:
// 获取所有 pdf 和 word 文件
getDocDir(['application/pdf', 'application/msword']);
4. 启动/关闭本地图片 HTTP 服务
startLocalImageServer(port: number): void
stopLocalImageServer(): void
- 参数
port
:端口号
- 说明
- 启动后可通过 http://localhost:端口/file?uri=xxx 访问本地图片
类型定义
interface DICMType {
uri: string; // 文件 content uri
name: string; // 文件名
mimeType: string; // MIME 类型
cover?: string; // 视频第一帧封面(base64),图片为 null
}
interface FileInfo {
uri: string;
name: string;
mimeType: string;
}
权限说明
首次调用会自动请求存储权限,请确保用户授权。
其它说明
- 支持 Android 10+ 及更低版本的 DCIM 目录读取。
- 视频文件自动生成第一帧封面(base64)。
- 分页兼容老设备,自动处理 LIMIT/OFFSET 不支持问题。
常见问题
-
如何只获取视频或图片?
可根据mimeType
字段自行筛选。 参考 -
如何获取其它目录的文件?
可用getDocDir
并传递对应的 MIME Type。
如需更多帮助,请参考 uni-app UTS 插件开发文档。
平台兼容性
云端兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | √ | √ |
uni-app(4.19)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
× | - | × | × | - | × | 5.0 | × | × |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.19)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
- | - | - | - | - | - |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
√ | √ | √ |