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

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));
})

至此,所有操作就完成了


http://www.kler.cn/a/551147.html

相关文章:

  • Spreadjs与GcExcel
  • 迅为RK3568开发板篇Openharmony配置HDF控制UART-什么是串口
  • Docker+DockerCompose+Harbor安装
  • DeepSeek R1本地部署 DeepSeek Api接口调用 java go版本
  • DFS算法篇:理解递归,熟悉递归,成为递归
  • 腿足机器人之二- 运动控制概览
  • SSH 登录到 Linux 服务器为什么没有要求输入密码
  • 详解Redis在Centos上的安装
  • MySQL索引和其底层数据结构介绍
  • 国产编辑器EverEdit - 如虎添翼的功能:快速选择
  • AutoGPT:突破性人工智能工具,赋能自动化写作与任务执行的未来
  • 用于可靠工业通信的5G-TSN集成原型:基于帧复制与消除可靠性的研究
  • 基于Springboot+Vue前后端分离的农场投入品运营线上管理系统设计与实现+万字文档+指导搭建视频
  • Logo语言的图形用户界面
  • Linux:expr命令、测试条件表达式、正则表达式入门教程
  • day9手机创意软件
  • 【Linux】动静态库的制作与原理
  • Deepseek-R1推理模型API接入调用指南 ChatGPT Web Midjourney Proxy 开源项目接入Deepseek教程
  • matlab 三维时频图绘制
  • 如何在不依赖函数调用功能的情况下结合工具与大型语言模型