golang用腾讯云的cos来实现上传头像

1 篇文章 0 订阅
1 篇文章 0 订阅

废话不多说直接上代码

前提条件你需要下载COS的SDK

go get -u github.com/tencentyun/cos-go-sdk-v5

ps:以下代码是用gin框架,这里主要是对这上传头像的使用 其他的逻辑就直接省略了。

//修改头像
func changeAvatar(ctx *gin.Context) {

   img, err := ctx.FormFile("avatar")


   //大小限制2Mb
   if img.Size > (2 << 20) {
      tool.RespErrorWithData(ctx, "头像文件过大")
      return
   }
   file, err := img.Open()

   filePath := "/avatar/" + tool.CreateUUID() + "." + strings.Split(img.Filename, `.`)[1]

   //上传头像
   err = service.UploadAvatar(file, filePath)

   if err != nil {
      fmt.Println("UploadAvatarErr: ", err)
      tool.RespInternalError(ctx)
      return
   }
    
   //以下代码可以省略
   cfg := tool.GetCfg().Cos
    
   url := cfg.AvatarUrl + filePath   

   //头像入数据库
   err = service.ChangeAvatar(url, Id)
   if err != nil {
      fmt.Println("changeAvatar_ChangeAvatar Err is: ", err)
      tool.RespInternalError(ctx)
      return
   }
   ctx.JSON(200, gin.H{
      "data":   "修改成功",
      "avatar": url,
   })
}

service.UploadAvatar

func UploadAvatar(file io.Reader, filePath string) error {
	cfg := tool.GetCfg().Cos
	u, _ := url.Parse(cfg.AvatarUrl)
	b := &cos.BaseURL{BucketURL: u}
	c := cos.NewClient(b, &http.Client{
		// 设置超时时间
		Timeout: 30 * time.Second,
		Transport: &cos.AuthorizationTransport{
			SecretID:  cfg.SecretId,
			SecretKey: cfg.SecretKey,
		},
	})

	_, err := c.Object.Put(context.Background(), filePath, file, nil)
	if err != nil {
		return err
	}
	return nil
}

cfg.AvatarUrl 是你的储存桶的地址  
cfg.SecretId  cfg.SecretKey 是你账号的ID和密钥
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值