【实用插件】uniapp原生获取手机媒体文件,支持分页,自动缓存,支持返回缩略图插件
·
背景
一次项目中需要获取用户手机相册文件并且需要按照ui给的原型渲染;经过百度发现uniapp提供的Api不符合需求,插件市场的插件都是组件插件带有自己的选择页面也不符合需求;所以自己开发了这个插件
使用的技术
由uniapp推出的UTS插件,可以使用ts编写,直接调用原生api能力,需要有一定的Android开发基础;
下载地址
https://ext.dcloud.net.cn/plugin?id=26519
获取手机媒体文件,支持分页,自动缓存,支持返回缩略图
- 支持单独搜索图片,视频或者一并查询
- 自动生成缩略图并缓存在应用下目录,保存的目录为应用缓存目录/cache_thumbnails;缩略图仅生成一份,后续访问同一份文件只会返回已经生成的缩略图
- 响应包含文件名称、创建时间、大小、文件路径,缩略图路径,视频时长
uniapp使用示例
<script lang="ts" setup>
import { ref } from 'vue'
import { getMedias, clearThumbnailCache } from "@/uni_modules/mrctx-media-plugin"
const mediaList = ref([])
const test1 = async () =>{
const page = 1
const pageSize = 10
const type = 'all'
// console.log(test())
getMedias({
page, //当前页,必须为number类型,必填
pageSize, // 页大小,必须为number类型,必填
type, // 查询的文件类型,类型有'image' | 'video' | 'all'中的一个,如果传all,将根据pageSize的一半来分别查询视频和图片,最后降序排序返回
success: (res) =>{
console.log('调用成功=>', res)
// 响应示例
//{
//"page": 1, 当前页码
//"pageSize": 10, 页大小
//"type": "all", 查询的类型
//"data": [
//{
//"id": 1000024067, 文件id
//"name": "V20251227-201826.mp4", 文件名称
//"thumbnail": 缩略图路径"/storage/emulated/0/Android/data/io.dcloud.HBuilder/cache/cache_thumbnails/media_plugin_V20251227-201826_-1539686654_1768026021585.jpg",
//"size": 1290358663, 文件大小 单位 KB
//"uri": "/storage/emulated/0/DCIM/Video/V20251227-201826.mp4",
//"duration": 228.987, 视频时长 单位:秒
//"type": "video", 文件类型
//"date": 1766838135000 创建时间
//},
//]
}
mediaList.value = res.data
},
fail: (err) =>{
console.log('调用失败=>', err)
// 具体异常信息请看下方异常信息章节
},
complete: (res) =>{
console.log("函数调用完成=>", res)
}
})
}
const test2 = async () =>{
const res = await clearThumbnailCache()
uni.showModal({
title: '提示',
content: JSON.stringify(res)
})
}
</script>
错误信息
[1001, 'The page parameter needs to be of type number'],
[1002, 'The pageSzie parameter needs to be of type number'],
[1003, "The type parameter should be one of 'image', 'video', or 'all' and must be a string"],
[1011, '没有相册读取权限']
// 插件会判断有没有该权限,使用分区存储,不再需要外部存储权限
// 但继续检查 MANAGE_EXTERNAL_STORAGE权限
// 但经过测试,检查该权限返回false时仍可以正常将缩略图缓存在缓存目录
// 其他版本的系统仍正常判断
[1012, '没有文件读取权限']
[1090, error] // 内部函数执行错误,会在stackTrace返回堆栈信息
异常信息
{
"errSubject": "mrctx-media-plugin",
"stackTrace": [],
"message": "",
"errMsg": "没有相册读取权限",
"suppressedExceptions": [],
"name": "Error",
"errCode": 1011
}
使用效果


支持
后续持续更新,将支持IOS,鸿蒙等系统!
将更新更多功能~
更多推荐


所有评论(0)