腾讯云的cos来实现上传头像"/>
golang用腾讯云的cos来实现上传头像
废话不多说直接上代码
前提条件你需要下载COS的SDK
go get -u github/tencentyun/cos-go-sdk-v5
ps:以下代码是用gin框架,这里主要是对这上传头像的使用 其他的逻辑就直接省略了。
//修改头像
func changeAvatar(ctx *gin.Context) {img, err := ctx.FormFile("avatar")//大小限制2Mbif 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().Cosurl := 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().Cosu, _ := 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和密钥
更多推荐
golang用腾讯云的cos来实现上传头像
发布评论