实现图片上传到oss

This commit is contained in:
2025-06-06 10:24:49 +08:00
parent 830f9c236b
commit ffc01164f7
12 changed files with 176 additions and 0 deletions

View File

@ -13,5 +13,6 @@ import (
_ "server/internal/logic/role"
_ "server/internal/logic/store"
_ "server/internal/logic/storeAdmin"
_ "server/internal/logic/upload"
_ "server/internal/logic/user"
)

View File

@ -78,5 +78,7 @@ func (s *sMerchant) Audit(ctx context.Context, in *model.MerchantAuditIn) (out *
}
func (s *sMerchant) Create(ctx context.Context, in *model.MerchantCreateIn) (out *model.CreateOut, err error) {
// 管理员创建的商户,无需审核,直接可以使用,需要注意商户关联的主账号的 username
return
}

View File

@ -0,0 +1,57 @@
package upload
import (
"context"
"server/utility/ecode"
"server/utility/oss"
"strings"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/grand"
"server/internal/model"
"server/internal/service"
)
type sUpload struct {
oss struct{}
}
func New() service.IUpload {
return &sUpload{
oss: struct{}{},
}
}
func init() {
service.RegisterUpload(New())
}
func (s *sUpload) Upload(ctx context.Context, in *model.UploadIn) (res *model.UploadOut, err error) {
// 判断文件格式
fileType := in.File.Header.Get("Content-Type")
if !strings.HasPrefix(fileType, "image/") {
return nil, gerror.New("图片格式错误")
}
//判断图片大小
if in.File.Size > 10*1024*1024 {
return nil, gerror.New("图片大小最多10M")
}
// 获取图片后缀
exit := strings.Split(fileType, "/")[1]
// 文件名称
fileName := strings.ToLower("image/" + grand.Letters(32) + "." + exit)
// 开始上传图片
client, ok := oss.GetClient("aliyun")
if !ok {
return nil, ecode.Fail.Sub("未配置OSS")
}
uploadRes, err := client.UploadFile(ctx, &model.OssUploadFileInput{
Filename: fileName,
File: in.File,
})
if err != nil {
return nil, err
}
return &model.UploadOut{
Url: uploadRes.Url,
}, nil
}