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

微信小程序使用腾讯云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', //idSecretKey: '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 → 提交用户信息修改

相关文章:

  • 学习设计模式《八》——原型模式
  • 手撕基于AMQP协议的简易消息队列-3(项目所用到的工具类的编写)
  • 从零打造个人博客静态页面与TodoList应用:前端开发实战指南
  • 什么是变量提升?
  • C++-缺省参数
  • 菊厂笔试1
  • 电子电器架构 --- 电气/电子架构如何发展以满足其处理和传感器融合需求
  • CAN总线通讯接口卡:工业通信的核心桥梁
  • 在UI原型设计中,低、高保真原型图有什么区别?
  • 验证码(笔记)
  • web 自动化之 Selenium 元素定位和浏览器操作
  • 数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )
  • Node.js 技术原理分析系列9——Node.js addon一文通
  • AI开发跃迁指南(第三章:第四维度1——Milvus、weaviate、redis等向量数据库介绍及对比选型)
  • 腾讯云:数字世界的“量子熔炉”与硅基文明引擎​
  • LeetCode 热题 100 238. 除自身以外数组的乘积
  • 16011.自动分簇KMeans算法
  • element MessageBox 实现底部三个按钮或者更多按钮—开箱即用
  • 【MySQL】第二弹——MySQL表的增删改查(CURD))
  • 【MySQL】存储引擎 - MEMORY详解
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 人民时评:透过上海车展读懂三组密码
  • 中信银行:拟出资100亿元全资设立信银金融资产投资有限公司
  • 对话哭泣照被恶意盗用成“高潮针”配图女生:难过又屈辱
  • 大学2025丨专访清华教授沈阳:建议年轻人每天投入4小时以上与AI互动
  • 巴基斯坦外交部:印度侵略行径侵犯巴主权