图片上传相关代码

import { PhotoViewPicker } from 'ohos.picker';
import { request } from 'ohos.net';

// 引导用户选择一张图片,并返回该图片的内存地址(URI)
const pickerAvatar = async () => {
  const options = new PhotoSelectOptions();
  options.MIMEType = PhotoViewMIMETypes.IMAGE_TYPE; // 指定只能选择图片类型
  options.maxSelectNumber = 1; // 用户只能选择一张图片
  const pickerView = new PhotoViewPicker();
  const urls = await pickerView.select(options);
  if (urls.photoUris.length <= 0) {
    return;
  }
  const imgUrl = urls.photoUris[0];
  return imgUrl;
};

// 将图片拷贝到应用的缓存目录
const copyImageToCache = async (imgUrl) => {
  const file = fs.openSync(photoImgPath, fs.OpenMode.READ_ONLY); // 打开文件为只读模式
  let fileFD = file.fd;
  const destPath = getContext().cacheDir; // 获取缓存目录路径
  const fileName = Date.now().toString() + '.jpg'; // 生成新的文件名
  const fullPath = destPath + '/' + fileName;
  fs.copyFileSync(fileFD, fullPath); // 拷贝文件
  return (`internal://cache/${fileName}`, fileName);
};

// 上传图片到服务器
const uploadImage = async (uri, fileName) => {
  let user = AppStorage.get('user') as ILoginUsersModel;
  let token = user?.token;
  let uploader = await request.uploadFile(getContext(), {
    method: 'POST',
    url: 'https://teach.itheima.net/hm/userInfo/avatar',
    header: {
      'Content-Type': 'multipart/form-data',
      'Authorization': `Bearer ${token}`,
    },
    files: ({
      filename: arr(1),
      type: 'jpg',
      name: 'file',
      uri: arr(0),
    }),
    data: () {},
  });
  uploader.on('progress', (uploadedSize, totalSize) => {
    Logger.info('上传大小' + uploadedSize, '总大小:' + totalSize);
  });
};

// 调用示例
const imgUrl = await pickerAvatar();
const result = await copyImageToCache(imgUrl);
const [url, fileName] = result;
uploadImage(url, fileName);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值