thread-master/old/backend/internal/handler/member/upload_member_avatar_handle...

38 lines
1.1 KiB
Go
Raw Normal View History

2026-07-07 14:02:41 +00:00
// Code scaffolded by goctl. Safe to edit.
// goctl 1.10.1
package member
import (
"errors"
"net/http"
app "haixun-backend/internal/library/errors"
"haixun-backend/internal/library/errors/code"
"haixun-backend/internal/logic/member"
"haixun-backend/internal/response"
"haixun-backend/internal/svc"
)
const maxAvatarUploadBytes = 5 << 20
func UploadMemberAvatarHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
r.Body = http.MaxBytesReader(w, r.Body, maxAvatarUploadBytes)
file, header, err := r.FormFile("avatar")
if err != nil {
if errors.As(err, new(*http.MaxBytesError)) {
response.Write(r.Context(), w, nil, app.For(code.Member).InputInvalidFormat("avatar file must be smaller than 5MB"))
return
}
response.Write(r.Context(), w, nil, app.For(code.Member).InputMissingRequired("avatar file is required"))
return
}
defer file.Close()
l := member.NewUploadMemberAvatarLogic(r.Context(), svcCtx)
data, err := l.UploadMemberAvatar(header.Filename, header.Header.Get("Content-Type"), file)
response.Write(r.Context(), w, data, err)
}
}