当前位置: 首页 > news >正文

HarmonyNext上传用户相册图片到服务器

图片选择就不用说了,直接用

无须申请权限 。

上传图片,步骤和android对比稍微有点复杂,可能是为了安全性考虑,需要将图片先拷贝到缓存目录下面,然后再上传,当然你也可以转成Base64,然后和服务端沟通。

这里是拷贝到缓存目录中

拷贝函数是:

public static async copyFileToCache(cacheDir: string, uri: string): Promise<string> {
  let id = uri.split('/').pop()?.split('.')[0];
  let imagePath = `${cacheDir}/${id}.jpg`;
  let file = await fileIo.open(uri, fs.OpenMode.READ_ONLY);
  try {
    fileIo.copyFileSync(file.fd, imagePath);
  } catch (err) {
    logger.info(`copyFileToCache copyFileSync err = ${err}`);
  }
  await fileIo.close(file.fd);
  return imagePath;
}

如果是列表,你也可以循环操作

上传是用的axios:

axios.post<HdResponse<UserPhotoBean>, AxiosResponse<HdResponse<UserPhotoBean>>, FormData>(BasicConstant.REQUES_URL +
AppApi.UPLOAD_PHOTO, formData, {
  headers: {
    'Content-Type': 'multipart/form-data'
  },
  context: context,
  onUploadProgress: (progressEvent: AxiosProgressEvent): void => {
    console.info(progressEvent && progressEvent.loaded && progressEvent.total ?
      Math.ceil(progressEvent.loaded / progressEvent.total * 100) + '%' : '0%');
  },
}
).then((res: AxiosResponse<HdResponse<UserPhotoBean>>) => {
  console.info("result" + JSON.stringify(res.data));
  resolve(res.data)
}).catch((err: AxiosError) => {
  reject()
  console.error("error:" + JSON.stringify(err));
})

至此,所有操作就完成了

相关文章:

  • STM32F1学习——SPI通信
  • VIE(可变利益实体)架构通俗解析 —— 以阿里巴巴为例(中英双语)
  • C++ | 虚函数
  • C#插件实现单据审核不通过报错提示
  • JG类软件测试报告编写注意事项
  • Elasticsearch 数据建模:从原理到实战的降维打击指南
  • 【git】工作场景下的 工作区 <-> 暂存区<-> 本地仓库 命令实战 具体案例
  • 什么是RDD以及它在Spark中的作用
  • 百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
  • Cocos Creator资源自动释放之2.x和3.x版本的使用及区别
  • 数值分析与科学计算导引——误差与算法举例
  • 深入解析Qt事件循环
  • Java中的Spliterator与并行计算
  • MongoDB数据导出工具mongoexport
  • LeetCode刷题---哈希表---387
  • 【机器学习】线性回归 多元线性回归
  • 【嵌入式Linux应用开发基础】fork()函数
  • vue事件修饰符的实现
  • 作用域链精讲
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_save_argv函数
  • 广西企业网站有哪些/h5网站制作平台
  • 石首做网站/广告营销的经典案例
  • 青岛 网站维护/seo网站推广培训
  • 江苏做网站/一站式网站建设公司
  • 丰台做网站/自媒体是什么
  • 如何用phpstudy做网站/班级优化大师怎么加入班级