HarmonyOS 鸿蒙Next 如何将PhotoViewPicker返回的uri封装成File类型对象

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何将PhotoViewPicker返回的uri封装成File类型对象

PhotoViewPicker返回的是string类型的uri,伙伴因为需要将选择的图片通过接口上传给服务端,接口中的图片类型为File类型。 当前arkts是否支持File类型?
如果支持,如何将uri封装成File类型

2 回复

可以通过fs.openSync(url),可以直接将获取的url转化为File类型

let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions)
  .then(async (PhotoSelectResult: picker.PhotoSelectResult) => {
    console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
    let file = fs.openSync(PhotoSelectResult.photoUris[0])  //直接将url转化为file类型
  });

更多关于HarmonyOS 鸿蒙Next 如何将PhotoViewPicker返回的uri封装成File类型对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,要将PhotoViewPicker返回的URI封装成File类型对象,可以通过以下步骤实现:

  1. 获取URI:首先,从PhotoViewPicker的回调中获取选中的图片URI。

  2. 解析URI:使用UriUtils类解析URI,获取文件路径。由于HarmonyOS的URI可能指向内容提供者或文件系统中的位置,因此解析过程可能需要不同的处理方式。

  3. 访问权限:确保应用具有访问该URI的权限。如果是内容提供者URI,需要相应的权限和访问许可。

  4. 创建File对象:利用解析得到的文件路径,创建File对象。

示例代码如下:

// 假设uri是PhotoViewPicker返回的URI
Uri uri = ...;
String filePath = UriUtils.getPathFromUri(context, uri);
File file = new File(filePath);

// 注意:UriUtils.getPathFromUri是一个假设的方法,实际可能需要自定义实现或使用系统API

由于HarmonyOS的API可能与Android有所不同,UriUtils.getPathFromUri方法可能不存在,需要根据实际API文档进行替换。

如果直接解析URI为文件路径的方法不可用,可能需要通过ContentResolver查询内容提供者来获取文件流,再将其写入本地文件。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部