HarmonyOS图片存在临时文件夹,为什么fs写到相册的时候没有异常提示,但是写到相册是一个空的图片

代码如下:

try { 
  let helper = photoAccessHelper.getPhotoAccessHelper(context); 
  // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。 
  // TODO HZY 如何获取图片格式 
  let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); 
  const exist = fs.accessSync(downloadRes.tempCachePath); 
  console.log(`${WebBrowserUtils._name} saveImageToAlbum url=${url} uri=${uri} tempCachePath=${downloadRes.tempCachePath} exist=${exist}`) 
  if (exist) { 
    // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 
    let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
    let imageFile = fs.openSync(downloadRes.tempCachePath, fs.OpenMode.READ_WRITE); 
    let arrayBuffer = new ArrayBuffer(4096); 
    fs.read(imageFile.fd, arrayBuffer, async (err, readLen) => { 
      if (err) { 
        console.log(`${WebBrowserUtils._name} 读取失败 ${err}`) 
      } else { 
        console.log(`${WebBrowserUtils._name} 开始写入图片 ${arrayBuffer} readLen=${readLen}`) 
        fs.writeSync(file.fd, arrayBuffer) 
        await Promise.all([fs.close(file.fd)]); 
 
        fs.closeSync(imageFile.fd); 
        promptAction.showToast({ 
          message: '已保存至相册!' 
        }); 
      } 
    }); 
  } else { 
    console.log(`${WebBrowserUtils._name} 路径有问题,文件不存在`) 
  } 
} catch(err) { 
  console.log(`${WebBrowserUtils._name} try saveImageToAlbum err=${err}`) 
}

图片已下载到本地临时目录,能正常读取,write 到系统相册时便成空白的图片。

HarmonyOS
2024-09-09 10:52:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

请尝试使用fs.copyFile(imageFile.fd, file.fd) 进行文件的保存。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fscopyfile

分享
微博
QQ
微信
回复
2024-09-09 17:06:28
相关问题
HarmonyOS 获取手机图片文件夹
272浏览 • 0回复 待解决
HarmonyOS 图片文件夹获取封面图coverUri
291浏览 • 1回复 待解决
如何添加一个自定义代码文件夹
441浏览 • 1回复 待解决
如何读取相册图片
887浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
443浏览 • 1回复 待解决
fs.unlink接口无法删除文件夹
1864浏览 • 1回复 待解决
OpenHarmony 设备 如何往相册图片
2325浏览 • 2回复 待解决
如何编辑裁剪相册图片
558浏览 • 1回复 待解决
鸿蒙相册最近删除文件夹在哪?
17564浏览 • 1回复 待解决
apache下文件夹没有访问权限
2371浏览 • 0回复 待解决