快速开始api开发(六)文件上传,设置头像
文件上传配置
配置
修改:config.yaml
...
Container:
Storage:
Store: "oss"
MaxFileSize: 1073741824
Config:
BucketName: ""
Endpoint: ""
AccessId: ""
AccessSecret: ""
...
修改:config/config.go
package container
import (...)
// 增加配置
type Storage struct {
Store string
MaxFileSize int64
Config storage.OSSConfig
}
type Config struct {
DB GormConfig
Redis RedisConfig
Jwt jwt.Config
Storage Storage // 增加配置
}
type Container struct {
DB *gorm.DB
Redis *redis.Client
Jwt jwt.Config
Storage storage.Client // 增加配置
UserModel user.UsersModel
}
func NewContainer(c Config) {
dbConn, redisConn := dbConn(c.DB), redisConn(c.Redis)
container = &Container{
DB: dbConn,
Redis: redisConn,
Jwt: c.Jwt,
Storage: storage.Parse(c.Storage.Store, c.Storage.MaxFileSize, c.Storage.Config), // 注册
UserModel: user.NewUsersModel(dbConn, redisConn),
}
}
支持 本地:local、阿里云:oss,腾讯云:cos,七牛云:qn 存储方式的配置使用。
详见 github.com/wuyan94zl/gotools/storage
头像上传
gotools handler --dir auth --method POST --name user/image
POST /auth/user/image
修改:app/handler/authuserimage.go
req := new(types.AuthUserImageRequest)
resp, err := auth.UserImageLogic(c, req)
// 删除c.ShouldBindJSON 等部分
if err != nil {
c.JSON(200, response.Error(500, err))
return
}
c.JSON(200, response.Success(resp))
修改:app/logic/auth/userimage.go
package auth
import (...)
func UserImageLogic(c *gin.Context, req *types.AuthUserImageRequest) (*types.AuthUserImageResponse, error) {
id := c.MustGet("ID").(float64)
info, err := container.Instance().UserModel.First(c.Copy(), int64(id)) // 认证用户信息
// 图片上传,上面已经全局注册了,这里直接使用
imageUrl, err := container.Instance().Storage.Put(c.Request, "myImage", "head")
if err != nil {
return nil, err
}
info.HeadImg = imageUrl
err = container.Instance().UserModel.Update(c.Copy(), info)
if err != nil {
return nil, err
}
return &types.AuthUserImageResponse{}, nil
}
结束
下节 elk 日志
本作品采用《CC 协议》,转载必须注明作者和本文链接