HarmonyOS 鸿蒙Next 图片和音频文件的保存和路径获取

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 图片和音频文件的保存和路径获取

我们APP有个场景是可以调用录音功能录一段音频/拍一张照片并保存在本地,也能将一个本地音频文件/图片文件获取Path后上传到云端。

请问:

1、如何实现录音后音频文件保存在本地/拍照后照片文件保存在本地,具体位置有没有路径要求?

2、如何获取本地某个文件的路径(Path)

2 回复
  1. 保存本地没有特殊的文件要求,理论上记住路径再来取就行,但是建议是放到应用的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系统中,图片和音频文件的保存与路径获取可以通过以下方式实现:

图片保存与路径获取

  1. 保存图片

    • 使用MediaStore API将图片保存到设备的媒体库中。
    • 示例代码:通过MediaStore.Images.Media.insertImage方法,传入ContentResolverBitmap对象、标题和描述,返回图片的URI。
  2. 获取路径

    • 由于直接获取文件路径在鸿蒙中不推荐,可通过URI转换为文件路径(需考虑权限问题)。
    • 使用Cursor查询URI对应的媒体记录,获取DATA字段(即文件路径)。

音频文件保存与路径获取

  1. 保存音频

    • 类似于图片保存,使用MediaStore.Audio.Media.insert方法,传入音频文件的ContentValues(包括标题、艺术家、MIME类型等)。
  2. 获取路径

    • 同样通过URI查询音频文件的实际存储路径。

注意事项

  • 确保应用具有读写外部存储的权限。
  • 鸿蒙系统中对文件访问有严格的安全策略,避免直接访问系统或其他应用的私有目录。
  • 使用MediaStore API可以确保文件被正确分类并易于后续管理。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部