HarmonyOS 一个本地路径的文件如何转成ArrayBuffer

file:///data/storage/el2/base/haps/entry/files/xxx.png
  • 1.

比如这种路径如何转成ArrayBuffer?

HarmonyOS
2025-01-09 17:06:38
600浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

沙箱路径直接保存就行了。

async  imageWriteAlbumExample2(fileUri:string) {
  console.info('createImageAssetRequestDemo:' + fileUri);
  let context = getContext(this);

  try {
    // 需要确保fileUri对应的资源存在
    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(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.
//如果没有申请相册读写权限,可以用SaveButton
SaveButton()
  .width('40%')
  .backgroundColor("#1A1D25")
  .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
    if (result == SaveButtonOnClickResult.SUCCESS) {
      try {
        const context = getContext(this);
        let helper = photoAccessHelper.getPhotoAccessHelper(context);
        // onClick触发后10秒内通过createAsset接口创建图片文件,10秒后createAsset权限收回。
        let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png');
        // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
        let resFile = fs.openSync(this.imagePath, fs.OpenMode.READ_ONLY)
        let file = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
        // 写入文件
        fs.copyFileSync(resFile.fd, file.fd);
        // 关闭文件
        fs.closeSync(file.fd);
        fs.closeSync(resFile.fd);
        promptAction.showToast({
          message: '已保存至相册',
          duration: 2500
        });
      } catch (error) {
        console.error("error is " + JSON.stringify(error));
      }
    } else {
      console.error("result error is " + JSON.stringify(result));
    }
  })
  • 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.
分享
微博
QQ
微信
回复
2025-01-09 19:58:52


相关问题
HarmonyOS Array如何转成ArrayBuffer
472浏览 • 1回复 待解决
HarmonyOS pixelMap转成ArrayBuffer
1244浏览 • 1回复 待解决
如何ArrayBuffer转成string?
1218浏览 • 1回复 待解决
HarmonyOS 如何开启一个本地web服务
1477浏览 • 0回复 待解决
文件上传本地路径如何获取
1045浏览 • 1回复 待解决
如何ArrayBuffer转成string
3429浏览 • 1回复 待解决
HarmonyOS base64图片如何转成Arraybuffer
551浏览 • 1回复 待解决
HarmonyOS ArrayBuffer如何转成Uint8Array
955浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
2294浏览 • 1回复 待解决
在 string 转成ArrayBuffer报错
1612浏览 • 1回复 待解决
HarmonyOS 读取本地json文件转成字符串
911浏览 • 1回复 待解决
HarmonyOS 如何将Uint8Array转成ArrayBuffer
1114浏览 • 1回复 待解决
鸿蒙里如何实现一个本地定时通知?
611浏览 • 0回复 待解决
Harmony 如何读取本地视频文件路径
15755浏览 • 2回复 待解决