HarmonyOS如何获取手机本地图片

有个需求是获取手机的本地图片,发送出去。从沙盒中获取一个图片本地路径,然后进行发送。这边做过的尝试如下:

1. 通过 DevEco-Studio 的 DeviceFile Browser 找到了 app 的 el1 和 el2 包路径,往里面上传图片的话报错没有权限。

2. 往代码工程的 rawfile 目录中塞图片,但是无法知道 rawfile 的本地路径。

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

1、el2文件沙箱目录可以通过下载文件接口下载至此目录。文件路径为getContext(this).filesDir + ‘/’ + {文件名}。

2、rawfile目录文件可以通过resourceManager…getRawFd()接口获取。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5#getrawfd9

3、相册图片可以通过picker方式获取参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/select-user-file-V5#选择图片或视频类文件

目前resourcemanager拿到的fd不支持copyfile(所有rawfile被压缩在一块), 得用fs.read接口指定offset和length去读出来,然后再从buffer把东西写进最终文件。可以参考如下实现:

getContext().resourceManager.getRawFileContent('1.png', (_err, value) => { 
  let myBuffer: ArrayBufferLike = value.buffer 
  let filePath = getContext().filesDir + "1.png"; 
  console.log("testTag-filePath:" + filePath); 
  let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
  let writeLen = fs.writeSync(file.fd, myBuffer); 
  console.info("testTag-write data to file succeed and size is:" + writeLen); 
  fs.closeSync(file); 
})
分享
微博
QQ
微信
回复
2024-09-09 17:04:43
相关问题
如何获取手机本地图片
457浏览 • 1回复 待解决
HarmonyOS 如何上传本地图片
115浏览 • 1回复 待解决
HarmonyOS Image加载本地图片咨询
471浏览 • 1回复 待解决
如何保存本地图片到相册中
1087浏览 • 1回复 待解决
ArkUI(eTS)如何实现本地图片保存?
7133浏览 • 1回复 待解决
服务卡片设置本地图片显示空白
7430浏览 • 2回复 已解决
识别本地图片的方法有哪些?
411浏览 • 1回复 待解决
HarmonyOS 获取手机图片文件夹
272浏览 • 0回复 待解决