HarmonyOS uri转换file,通过file的path再转换回uri,两个uri不一致
let photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 1;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(photoSelectOptions, (err: BusinessError, photoSelectResult: picker.PhotoSelectResult) => {
if (err) {
console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
return;
}
//获取选中图片的uri
//file://media/Photo/2/IMG_1718855501_001/IMG_001.jpg
let uri = photoSelectResult.photoUris[0]
//通过uri转file
let file: fs.File = fs.openSync(uri);
// /Photo/2/IMG_1718855501_001
let picPath= file.path;
//通过fileUri再次将path转为uri
//file://com.babytree.apps.hmpregnancy/Photo/2/IMG_1718855501_001
fileUri.getUriFromPath(picPath)
});
以上是选择图片的demo
步骤一。把选中图片的原始uri,值为file://media/Photo/2/IMG_1718855501_001/IMG_001.jpg
步骤二。.将原始uri通过创建file的形式,获取到此file的path,值为/Photo/2/IMG_1718855501_001
步骤三。将此file的path,通过fileUri的形式再转为uri,值为file://com.babytree.apps.hmpregnancy/Photo/2/IMG_1718855501_001
我有以下几个疑问:
1.这样的转化过程是否正确?
2.上述步骤一中获取到的图片uri和步骤三中的uri应该指向的是同一个文件吧?
3.为什么上述步骤一种的原始uri的值和步骤三中的uri值不一致?
4.上述步骤二中获取到的file的Path,是否为此文件的绝对路径,为什么没有了此文件的后缀。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS @state修饰两个变量,出现值不一致
374浏览 • 1回复 待解决
HarmonyOS JSON两个实现行为不一致,容易混淆
35浏览 • 1回复 待解决
Path组件绘制的线条粗细不一致
1947浏览 • 1回复 待解决
HarmonyOS 如何将一个file://协议的uri转为internal://协议类型
83浏览 • 1回复 待解决
HarmonyOS 单位不一致问题
82浏览 • 1回复 待解决
HarmonyOS 如何将PhotoViewPicker返回的uri封装成File类型对象?
245浏览 • 1回复 待解决
HarmonyOS 相册选择的照片路径与拍照的文件流路径格式不一致,如何转换?
52浏览 • 1回复 待解决
启动和调试的行为不一致
259浏览 • 1回复 待解决
文件存储file.readText接口,对应的uri是怎么获取的?
6907浏览 • 1回复 待解决
依赖hsp出包,报错versionname不一致
120浏览 • 1回复 待解决
water flow 出现gap不一致问题
745浏览 • 1回复 待解决
签名不一致报错怎么回事?
2751浏览 • 1回复 待解决
HarmonyOS Flutter编译命令执行不一致的问题
105浏览 • 1回复 待解决
HarmonyOS rotateX/rotateY,和web效果不一致
345浏览 • 1回复 待解决
HarmonyOS 如何实现左右两个Row的高度一致
65浏览 • 1回复 待解决
window 全屏操作不同设备表现不一致?
205浏览 • 0回复 待解决
window 全屏操作不同设备表现不一致
418浏览 • 1回复 待解决
napi里面,相同输入输出不一致
1711浏览 • 1回复 待解决
ArkTS开发如何比较两个string是否一致 ?
6427浏览 • 3回复 待解决
HarmonyOS scanInfo的bssid与linkInfo的bssid不一致
45浏览 • 1回复 待解决
文件存储中 file.writeArrayBuffer和file.readArrayBuffer 两个函数如何使用
2327浏览 • 1回复 待解决
HarmonyOS 资质和ICP备案名称些许不一致
55浏览 • 1回复 待解决
HarmonyOS hap与集成态hsp的releaseType不一致
26浏览 • 1回复 待解决
HarmonyOS 通知渠道与通知提醒方式不一致
74浏览 • 1回复 待解决
HarmonyOS 如何使file://docs的媒体文件uri在Image组件上正常显示
65浏览 • 1回复 待解决
这样的转换过程是正确的,步骤1和步骤3中的uri指向的是同一个文件,因为并没有对文件进行什么操作,文件还是再用户文件空间中;
步骤1和步骤3中的uri不一致是因为,步骤3里边的参数填写的应该是文件的沙箱路径,但是传进path路径不是沙箱路径,传进去的文件路径,文件还在用户空间中,所以导致两个方法返回的值不一样,步骤3方法返回的路径前缀还是com.babytree.apps.hmpregnancy开头的,就说明这个方法返回的也是应用沙箱里边的uri;
步骤2里边获取到的path,并不是文件的绝对路径,我们的path是不带文件后缀,uri带文件后缀。应该要根据自己具体业务来选择