檔案上傳配置
配置
修改: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 協議》,轉載必須註明作者和本文連結