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修饰两个变量,出现值不一致 
1376浏览  • 1回复 待解决
HarmonyOS JSON两个实现行为不一致,容易混淆 
1206浏览  • 1回复 待解决
Path组件绘制的线条粗细不一致 
2904浏览  • 1回复 待解决
HarmonyOS 如何将一个file://协议的uri转为internal://协议类型 
1146浏览  • 1回复 待解决
HarmonyOS  单位不一致问题 
1175浏览  • 1回复 待解决
HarmonyOS 如何将PhotoViewPicker返回的uri封装成File类型对象? 
1284浏览  • 1回复 待解决
HarmonyOS 相册选择的照片路径与拍照的文件流路径格式不一致,如何转换? 
1098浏览  • 1回复 待解决
文件存储file.readText接口,对应的uri是怎么获取的? 
7870浏览  • 1回复 待解决
启动和调试的行为不一致 
1429浏览  • 1回复 待解决
依赖hsp出包,报错versionname不一致 
1139浏览  • 1回复 待解决
water flow 出现gap不一致问题 
1767浏览  • 1回复 待解决
HarmonyOS Text组件文本上下间距不一致 
1130浏览  • 1回复 待解决
HarmonyOS backupDir获取的目录和说明不一致 
955浏览  • 1回复 待解决
HarmonyOS Flutter编译命令执行不一致的问题 
1073浏览  • 1回复 待解决
HarmonyOS 通过PhotoViewPicker选择的图片如何转换为File类型 
959浏览  • 1回复 待解决
签名不一致报错怎么回事? 
4214浏览  • 1回复 待解决
第三方服务【集成地图SDK时坐标系与HarmonyOS不一致,如何转换?】 
630浏览  • 1回复 待解决
HarmonyOS  如何实现左右两个Row的高度一致 
1265浏览  • 1回复 待解决
HarmonyOS rotateX/rotateY,和web效果不一致 
1304浏览  • 1回复 待解决
window 全屏操作不同设备表现不一致 
1424浏览  • 1回复 待解决
window 全屏操作不同设备表现不一致? 
1158浏览  • 0回复 待解决
ArkTS开发如何比较两个string是否一致 ? 
8728浏览  • 3回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中将文件路径转换为URI? 
1488浏览  • 1回复 待解决
HarmonyOS 如何使file://docs的媒体文件uri在Image组件上正常显示 
988浏览  • 1回复 待解决
HarmonyOS list中item数据显示效果不一致 
1131浏览  • 1回复 待解决





















这样的转换过程是正确的,步骤1和步骤3中的uri指向的是同一个文件,因为并没有对文件进行什么操作,文件还是再用户文件空间中;
步骤1和步骤3中的uri不一致是因为,步骤3里边的参数填写的应该是文件的沙箱路径,但是传进path路径不是沙箱路径,传进去的文件路径,文件还在用户空间中,所以导致两个方法返回的值不一样,步骤3方法返回的路径前缀还是com.babytree.apps.hmpregnancy开头的,就说明这个方法返回的也是应用沙箱里边的uri;
步骤2里边获取到的path,并不是文件的绝对路径,我们的path是不带文件后缀,uri带文件后缀。应该要根据自己具体业务来选择