微信小程序使用腾讯云COS SDK实现用户头像上传

  • 引入与初始化COS SDK (从官网下载cos-wx-sdk-v5.js文件,本地上传)

    const COS = require('../../../static/utils/cos-wx-sdk-v5.js') as any;

    //实例化一个cos对象
    const cos = new COS({
    SecretId: 'AK***********************VedSJ', //id
    SecretKey: 'qUy*************************K4bv2' //密钥
    });

  • 用户点击头像触发上传操作

    复制代码
    const handleAvatarClick = () => {
      popupType.value = 'avatar';
      entityList.value = categoryList.value;
      popup.value.open();
    };

    点击头像项时,打开底部弹窗,让用户选择是拍摄还是从相册选择

  • 读取文件内容并上传至COS

    const uploadToCOS = (filePath: string, key: string): Promise<string> => {
    return new Promise((resolve, reject) => {
    //读取本地文件数据
    uni.getFileSystemManager().readFile({
    filePath,
    success: (fileData) => {
    //调用方法上传对象到COS存储桶
    cos.putObject({
    Bucket: 'cs*******387', //桶名称
    Region: 'ap-
    ', //地域
    Key: key,
    Body: fileData.data,
    ContentType: 'image/jpeg'
    }, (err: any, data: any) => {
    if (err) {
    reject(err);
    } else {
    resolve(https://${data.Location});
    }
    });
    },
    fail: (err) => {
    reject(err);
    }
    });
    });
    };

  • 更新用户信息并提交修改

    复制代码
    uCenterInfo.icon_url = avatarUrl;
    await changeUserInfo();

    将上传成功后的头像地址avatarUrl设置到uCenterInfo.icon_url,调用changeUserInfo()方法将更新后的用户信息提交到后端服务。

  • 错误处理

    catch (error) {
    uni.showToast({ title: '上传失败', icon: 'none' });
    console.error('上传失败:', error);
    }

  • 总结COS上传完整流程图解

    复制代码
    点击头像 → 打开弹窗选择"从相册选择"
            ↓
    调用 uni.chooseImage → 获取临时文件路径
            ↓
    构造唯一文件名 → 准备上传到 COS
            ↓
    调用 uni.getFileSystemManager().readFile → 读取文件二进制数据
            ↓
    调用 cos.putObject → 上传到腾讯云 COS
            ↓
    上传成功 → 获取 CDN 访问链接
            ↓
    更新 uCenterInfo.icon_url → 提交用户信息修改
相关推荐
老虎06274 小时前
JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)
笔记·学习·微信小程序
郭邯10 小时前
小程序中自定义组件的样式隔离
微信小程序
每天开心12 小时前
噜噜旅游App(4)——构建旅游智能客服模块,实现AI聊天
前端·微信小程序·前端框架
老华带你飞17 小时前
口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·论文·毕设·口腔小程序
尸僵打怪兽17 小时前
HBuilder X打包发布微信小程序
微信小程序·小程序·打包·hbuilder x
说私域1 天前
公域流量向私域流量转化策略研究——基于开源AI智能客服、AI智能名片与S2B2C商城小程序的融合应用
人工智能·小程序
半生过往1 天前
微信小程序文件下载与预览功能实现详解
微信小程序·小程序·notepad++·压缩包下载解压
源码_V_saaskw1 天前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
weixin_lynhgworld1 天前
淘宝扭蛋机小程序系统开发:重塑电商互动模式
大数据·小程序
996幸存者1 天前
uni-app区域选择、支持静态、动态数据
微信小程序·uni-app