如何正确管理媒体资源
Media Library Kit(媒体文件管理服务)提供了媒体资源的管理能力,开发者可以访问和修改相册中的媒体信息。
注意:
Media Library Kit仅提供图片和视频的管理能力,不涉及音频文件的管理。
媒体资源的常用路径表示
有多种路径形式来表示媒体资源,对应了不同的含义和使用场景,作为媒体资源的唯一标识,可在媒体资源管理过程中的部分媒体文件操作中被使用。
| 类型 | 形式 | 举例 | 说明 |
|---|---|---|---|
| URI | file://media/Photo/<ID>/<真实文件名(无后缀)>/<displayName> | 图片: file://media/Photo/111/IMG_1234567890_123/A.jpg 视频: file://media/Photo/222/VID_1234567890_321/B.mp4 | 字段定义与使用方式详见媒体文件URI。 |
| Path(媒体沙箱路径) | /data/storage/el2/media/Photo/<ID>/<真实文件名(无后缀)>/<displayName> | 图片: /data/storage/el2/media/Photo/111/IMG_1234567890_123/A.jpg 视频: /data/storage/el2/media/Photo/222/VID_1234567890_321/B.mp4 | 媒体沙箱路径用于三方应用访问媒体资源。 |
| 真实路径 | /storage/cloud/100/files/Photo/<所在桶目录>/<真实文件名> | 图片: /storage/cloud/100/files/Photo/1/IMG_1234567890_123.jpg 视频: /storage/cloud/100/files/Photo/2/VID_1234567890_321.mp4 | 媒体资源在设备文件系统内实际保存的位置。 |
标准媒体文件操作流程
| 媒体文件操作 | 标准实现方式 |
|---|---|
| 新增(仅系统应用) | 创建媒体资源 |
| 删除(仅系统应用) | 将文件放入回收站 |
| 获取 | 获取指定媒体资源 获取图片和视频缩略图 使用Picker选择媒体库资源 |
| 重命名 | 重命名媒体资源 |
| 保存到图库 | 保存媒体库资源 |
| 对用户相册内媒体文件进行操作 | 添加图片和视频到用户相册中 获取用户相册中的图片和视频 从用户相册中移除图片和视频 |
常见问题
能否通过修改生成或自行构造的媒体库路径来新增、删除、获取、重命名、移动文件或文件夹
不可以。因为媒体库URI和Path为虚拟路径,是通过组合媒体资源的部分属性来对媒体文件进行唯一标识,并非实际存在对应目录层级,也不存在真实的物理文件,需要通过媒体库内部的寻址方式才能进行有效的媒体文件操作。若使用修改生成或自行构造的媒体库路径对媒体文件进行操作,可能会造成非预期的文件操作结果。
以下是常见错误用法示例(以媒体库虚拟路径“/data/storage/el2/media/Photo/111/IMG_1234567890_123/A.jpg”为例):
-
截断生成的媒体路径。
1.1 从路径尾部删除部分目录层级。例如:
- 删除displayName部分:/data/storage/el2/media/Photo/111/IMG_1234567890_123/
- 删除真实文件名 + displayName部分:/data/storage/el2/media/Photo/111/
- 删除路径尾部的更多层级。
以上得到的路径均为无效的媒体库目录,不能用来表示媒体资源父目录。
1.2 删除路径中的某些目录层级。例如:
- 删除真实文件名部分:/data/storage/el2/media/Photo/111/A.jpg
- 删除ID部分:/data/storage/el2/media/Photo/IMG_1234567890_123/A.jpg
- 删除其他目录层级。
这些路径均为非法的媒体库目录,不能表示在某个目录层级下进行图片的新增或移动。
-
修改生成的媒体路径。
2.1 更改路径中的displayName。例如将“A.jpg”替换为“B.xxx”,得到“/data/storage/el2/media/Photo/111/IMG_1234567890_123/B.xxx”。这是一个非法的媒体库路径,不能表示在“原目录”下创建新文件“B.xxx”。
2.2 更改路径中的ID。例如将路径中的ID从111替换为1111,得到“/data/storage/el2/media/Photo/1111/IMG_1234567890_123/A.jpg”。这也是一个非法的媒体库路径,不能作为将ID=111的“A.jpg”映射到另一个ID=1111的实现方式。
2.3 更改路径中的其他目录层级。
上述通过截断、修改媒体库目录层级而构造出的路径,均为非法的媒体库路径。如果针对这些非法路径使用增、删、改、查的相关接口(如fs.stat、fs.lstat、fs.access、fs.open、fs.close、fs.read、fs.write、fs.unlink等),均会造成非预期的结果。
为确保正确性与稳定性,请务必通过标准媒体文件操作流程进行媒体文件管理。
你可能感兴趣的鸿蒙文章
openharmony 鸿蒙 i18n-sorting-local
openharmony 鸿蒙 i18n-numbers-weights-measures
openharmony 鸿蒙 i18n-preferred-language
openharmony 鸿蒙 i18n-language-region-display