HarmonyOS鸿蒙NEXTPC端应用开发如何通过PhotoViewPicker从图库中选择上传图片,并使用@ohos.request中的request.agent.create创建上传任务,实现PC后台上传图片?

HarmonyOS鸿蒙NEXTPC端应用开发如何通过PhotoViewPicker从图库中选择上传图片,并使用@ohos.request中的request.agent.create创建上传任务,实现PC后台上传图片? 如何通过PhotoViewPicker从图库中选择上传图片,并使用@ohos.request中的request.agent.create,实现PC端应用在后台进行图片上传,是否有示例可以提供?

3 回复

参考文档:PC后台上传图片

更多关于HarmonyOS鸿蒙NEXTPC端应用开发如何通过PhotoViewPicker从图库中选择上传图片,并使用@ohos.request中的request.agent.create创建上传任务,实现PC后台上传图片?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS PC端,使用PhotoViewPicker选择图片需调用photoAccessHelper.getPhotoAccessHelper()获取实例,通过select()方法启动选择器并返回选中图片的URI。上传时,通过request.agent.create()创建上传任务,配置RequestAgent对象,设置URL、文件数据(从URI读取)及请求方法为POST。调用request()启动任务,监听进度与结果。注意处理权限和URI访问。

在HarmonyOS Next中,可通过以下步骤实现PC端图片选择与后台上传:

  1. 使用PhotoViewPicker选择图片
import picker from '@ohos.file.picker';

// 创建图片选择器实例
const photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = 1; // 设置选择数量

const photoViewPicker = new picker.PhotoViewPicker();
try {
  const photoSelectResult = await photoViewPicker.select(photoSelectOptions);
  const uri = photoSelectResult.photoUris[0]; // 获取选中图片URI
} catch (err) {
  console.error('图片选择失败');
}
  1. 创建后台上传任务
import request from '@ohos.request';

// 构建上传任务配置
const config: request.UploadConfig = {
  url: 'https://your-server.com/upload',
  header: { 'Content-Type': 'multipart/form-data' },
  method: request.RequestMethod.POST,
  files: [
    {
      filename: 'image.jpg',
      name: 'file',
      uri: uri // 从PhotoViewPicker获取的URI
    }
  ]
};

// 创建并执行上传任务
try {
  const task: request.UploadTask = await request.agent.create(context, config);
  task.on('complete', (data: request.UploadResponse) => {
    console.info('上传完成');
  });
  task.on('fail', (err: Error) => {
    console.error('上传失败:', err.message);
  });
} catch (err) {
  console.error('任务创建失败');
}

关键点说明:

  • PhotoViewPicker返回的URI可直接用于request.agent的上传文件配置
  • request.agent.create会自动在后台执行上传,无需额外处理线程
  • 通过事件监听器处理上传结果
  • 需要配置网络权限:ohos.permission.INTERNET

此方案适用于需要保持应用响应性的场景,上传过程不会阻塞主线程。

回到顶部