快速开始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 协议》,转载必须注明作者和本文链接
没有造飞机的格局,怎么能拧得好螺丝。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!