如何获取手机本地图片

从沙盒中获取一个图片本地路径,然后进行发送。做过的尝试如下:

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

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

HarmonyOS
2024-07-23 11:23:56
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
越来越认真了

1、可以通过下载文件接口下载至el2文件沙箱目录:

文件路径为getContext(this).filesDir + '/' + {文件名}

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

3、相册图片可以通过picker方式获取参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/select-user-file-0000001774280102-V5#ZH-CN_TOPIC_0000001881179297__%E9%80%89%E6%8B%A9%E5%9B%BE%E7%89%87%E6%88%96%E8%A7%86%E9%A2%91%E7%B1%BB%E6%96%87%E4%BB%B6

目前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-07-23 18:41:32
相关问题
HarmonyOS如何获取手机本地图片
658浏览 • 1回复 待解决
HarmonyOS 如何上传本地图片
115浏览 • 1回复 待解决
ArkUI(eTS)如何实现本地图片保存?
7131浏览 • 1回复 待解决
如何保存本地图片到相册中
1087浏览 • 1回复 待解决
HarmonyOS Image加载本地图片咨询
467浏览 • 1回复 待解决
服务卡片设置本地图片显示空白
7430浏览 • 2回复 已解决
识别本地图片的方法有哪些?
407浏览 • 1回复 待解决
HarmonyOS 获取手机图片文件夹
272浏览 • 0回复 待解决