HarmonyOS 将沙盒路径视频导出至相册

想要将保存在沙盒路径的视频文件导出至相册时,出现 No such file or directory, error code: 13900002。

需要导出的视频文件路径为:file:///data/storage/el2/base/haps/entry/files/moments/joymoment_1720685987804.mp4是目的地址不存在吗,还是说文件迁移之内在沙盒路径之间进行,不能在沙盒路径与相册之间进行操作,如若是这样,是否还有其他方案?

HarmonyOS
2024-12-25 16:14:42
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

如下方法都可以保存视频到相册,参考一下:

videoWriteAlbumExample(fileUri:
string
)
{
  let titleStr = 'testVideo' + new Date().getTime()
  let context = getContext(this);
  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  console.debug("getPhotoAccessHelper success: ")
  let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO;
  let extension: string = 'mp4';
  let options: photoAccessHelper.CreateOptions = {
    title: titleStr
  }
  phAccessHelper.createAsset(photoType, extension, options).then(async (uriDes: string) => {
    // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
    try {
      // 写到媒体库文件中
      let resFile = fs.openSync(fileUri, fs.OpenMode.READ_ONLY)
      let file = fs.openSync(uriDes, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
      // 内容复制到媒体库文件中
      fs.copyFileSync(resFile.fd, file.fd);
      fs.closeSync(file.fd);
      fs.closeSync(resFile.fd);
      //AlertDialog.show({message:'已保存至相册!'});
      promptAction.showToast({
        message: '已保存至相册',
        duration: 2500
      });
    } catch (err) {
      console.error("error is " + JSON.stringify(err))
    }
  })
    .catch((err: Error) => {
      console.error("error is " + JSON.stringify(err))
    });
}

async
videoWriteAlbumExample2(fileUri:
string
)
{
  console.info('createVideoAssetRequestDemo:' + fileUri);
  let context = getContext(this);
  try {
    // 需要确保fileUri对应的资源存在
    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest =
      photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri);
    await phAccessHelper.applyChanges(assetChangeRequest);
    console.info('apply createVideoAssetRequest successfully');
    promptAction.showToast({
      message: '已保存至相册',
      duration: 2500
    });
  } catch (err) {
    console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`);
    promptAction.showToast({
      message: '保存失败',
      duration: 2000
    });
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
分享
微博
QQ
微信
回复
2024-12-25 18:59:50
相关问题
HarmonyOS 应用路径视频无法播放
1214浏览 • 1回复 待解决
HarmonyOS 拷贝文件
1111浏览 • 1回复 待解决
HarmonyOS 无权限导出文件
713浏览 • 1回复 待解决
HarmonyOS ArkTS 如何访问路径
1821浏览 • 1回复 待解决
HarmonyOS Video组件如何播放视频
766浏览 • 1回复 待解决
HarmonyOS 加载RN路径资源文件
816浏览 • 1回复 待解决
有谁知道如何访问路径
1234浏览 • 1回复 待解决
HarmonyOS 如何图片转位base64
997浏览 • 1回复 待解决
HarmonyOS NAPI层怎么读写文件?
860浏览 • 1回复 待解决
HarmonyOS 内购如何开启测试
724浏览 • 1回复 待解决
HarmonyOS dlopen加载的so文件失败
628浏览 • 1回复 待解决
HarmonyOS 安装包读取文件到
718浏览 • 1回复 待解决