package admin import ( "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/model/dto" "github.com/break/junhong_cmp_fiber/pkg/errors" "github.com/break/junhong_cmp_fiber/pkg/response" "github.com/break/junhong_cmp_fiber/pkg/storage" ) type StorageHandler struct { service *storage.Service } func NewStorageHandler(service *storage.Service) *StorageHandler { return &StorageHandler{service: service} } func (h *StorageHandler) GetUploadURL(c *fiber.Ctx) error { if h.service == nil { return errors.New(errors.CodeInternalError, "对象存储服务未配置") } var req dto.GetUploadURLRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } result, err := h.service.GetUploadURL(c.UserContext(), req.Purpose, req.FileName, req.ContentType) if err != nil { return errors.New(errors.CodeInternalError, err.Error()) } return response.Success(c, dto.GetUploadURLResponse{ UploadURL: result.URL, FileKey: result.FileKey, ExpiresIn: result.ExpiresIn, }) }