HarmonyOS 鸿蒙Next 图片和音频文件的保存和路径获取
HarmonyOS 鸿蒙Next 图片和音频文件的保存和路径获取
我们APP有个场景是可以调用录音功能录一段音频/拍一张照片并保存在本地,也能将一个本地音频文件/图片文件获取Path后上传到云端。
请问:
1、如何实现录音后音频文件保存在本地/拍照后照片文件保存在本地,具体位置有没有路径要求?
2、如何获取本地某个文件的路径(Path)
2 回复
- 保存本地没有特殊的文件要求,理论上记住路径再来取就行,但是建议是放到应用的cache或者files文件夹下,他们的具体沙箱路径为 /data/storage/el2/base/haps/app/files(/cache),其中需要注意的是如果想要将文件通过request(上传下载api)上传到服务器,必须放在cache文件夹下
2.如果你知道文件名,例如1.txt,他在files文件夹下,你可以通过
let context = getContext(this) as common.UIAbilityContext;
let pathDir = context.filesDir;
let dstPath = pathDir + "/1.txt";
这种方式来获取文件路径
提供一个保存文件到沙箱的demo,可以参考一下:
console.log("copyFile!")
let srcFileDescriptor = context.resourceManager.getRawFdSync(xxx.docx");
//这里填rawfile文件夹下的文件名(包括后缀)
let stat = fs.statSync(srcFileDescriptor.fd)
console.log(`stat isFile:${stat.isFile()}`);
// 通过UIAbilityContext获取沙箱地址filesDir,以Stage模型为例
let pathDir = context.filesDir;
console.log("path:", pathDir)
let dstPath = pathDir + "/2.docx";
let dest = fs.openSync(dstPath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
let bufsize = 4096
let buf = new ArrayBuffer(bufsize)
let off = 0, len = 0, readedLen = 0
while (len = fs.readSync(srcFileDescriptor.fd, buf, { offset: srcFileDescriptor.offset + off, length: bufsize })) {
readedLen += len
fs.writeSync(dest.fd, buf, { offset: off, length: len })
off = off + len
if ((srcFileDescriptor.length - readedLen) < bufsize) {
bufsize = srcFileDescriptor.length - readedLen
}
}
fs.close(dest.fd)
更多关于HarmonyOS 鸿蒙Next 图片和音频文件的保存和路径获取的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,图片和音频文件的保存与路径获取可以通过以下方式实现:
图片保存与路径获取
-
保存图片:
- 使用
MediaStore
API将图片保存到设备的媒体库中。 - 示例代码:通过
MediaStore.Images.Media.insertImage
方法,传入ContentResolver
、Bitmap
对象、标题和描述,返回图片的URI。
- 使用
-
获取路径:
- 由于直接获取文件路径在鸿蒙中不推荐,可通过URI转换为文件路径(需考虑权限问题)。
- 使用
Cursor
查询URI对应的媒体记录,获取DATA
字段(即文件路径)。
音频文件保存与路径获取
-
保存音频:
- 类似于图片保存,使用
MediaStore.Audio.Media.insert
方法,传入音频文件的ContentValues
(包括标题、艺术家、MIME类型等)。
- 类似于图片保存,使用
-
获取路径:
- 同样通过URI查询音频文件的实际存储路径。
注意事项
- 确保应用具有读写外部存储的权限。
- 鸿蒙系统中对文件访问有严格的安全策略,避免直接访问系统或其他应用的私有目录。
- 使用
MediaStore
API可以确保文件被正确分类并易于后续管理。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html