feat: udpate upload content type
This commit is contained in:
@@ -3,12 +3,15 @@ package admin
|
||||
import (
|
||||
"quyun/app/models"
|
||||
"quyun/app/requests"
|
||||
"quyun/providers/ali"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
// @provider
|
||||
type medias struct{}
|
||||
type medias struct {
|
||||
oss *ali.OSSClient
|
||||
}
|
||||
|
||||
// List medias
|
||||
// @Router /v1/admin/medias [get]
|
||||
@@ -18,3 +21,20 @@ func (ctl *medias) List(ctx fiber.Ctx, pagination *requests.Pagination, query *L
|
||||
cond := models.Medias.BuildConditionWithKey(query.Keyword)
|
||||
return models.Medias.List(ctx.Context(), pagination, cond)
|
||||
}
|
||||
|
||||
// Show media
|
||||
// @Router /v1/admin/medias/:id [get]
|
||||
// @Bind id path
|
||||
func (ctl *medias) Show(ctx fiber.Ctx, id int64) error {
|
||||
media, err := models.Medias.GetByID(ctx.Context(), id)
|
||||
if err != nil {
|
||||
return ctx.SendString("Media not found")
|
||||
}
|
||||
|
||||
url, err := ctl.oss.GetSignedUrl(ctx.Context(), media.Path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return ctx.Redirect().To(url)
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li
|
||||
|
||||
type PostForm struct {
|
||||
Title string `json:"title"`
|
||||
HeadImage int64 `json:"head_image"`
|
||||
Price int64 `json:"price"`
|
||||
Discount int16 `json:"discount"`
|
||||
Introduction string `json:"introduction"`
|
||||
|
||||
@@ -23,8 +23,12 @@ func Provide(opts ...opt.Option) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := container.Container.Provide(func() (*medias, error) {
|
||||
obj := &medias{}
|
||||
if err := container.Container.Provide(func(
|
||||
oss *ali.OSSClient,
|
||||
) (*medias, error) {
|
||||
obj := &medias{
|
||||
oss: oss,
|
||||
}
|
||||
|
||||
return obj, nil
|
||||
}); err != nil {
|
||||
|
||||
@@ -45,6 +45,11 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
Query[ListQuery]("query"),
|
||||
))
|
||||
|
||||
router.Get("/v1/admin/medias/:id", Func1(
|
||||
r.medias.Show,
|
||||
PathParam[int64]("id"),
|
||||
))
|
||||
|
||||
// 注册路由组: orders
|
||||
router.Get("/v1/admin/orders", DataFunc2(
|
||||
r.orders.List,
|
||||
@@ -81,10 +86,11 @@ func (r *Routes) Register(router fiber.Router) {
|
||||
))
|
||||
|
||||
// 注册路由组: uploads
|
||||
router.Get("/v1/admin/uploads/pre-uploaded-check/:md5.:ext", DataFunc2(
|
||||
router.Get("/v1/admin/uploads/pre-uploaded-check/:md5.:ext", DataFunc3(
|
||||
r.uploads.PreUploadCheck,
|
||||
PathParam[string]("md5"),
|
||||
PathParam[string]("ext"),
|
||||
QueryParam[string]("mime"),
|
||||
))
|
||||
|
||||
router.Post("/v1/admin/uploads/post-uploaded-action", Func1(
|
||||
|
||||
@@ -32,10 +32,11 @@ type PreCheckResp struct {
|
||||
// @Router /v1/admin/uploads/pre-uploaded-check/:md5.:ext [get]
|
||||
// @Bind md5 path
|
||||
// @Bind ext path
|
||||
func (up *uploads) PreUploadCheck(ctx fiber.Ctx, md5, ext string) (*PreCheckResp, error) {
|
||||
// @Bind mime query
|
||||
func (up *uploads) PreUploadCheck(ctx fiber.Ctx, md5, ext, mime string) (*PreCheckResp, error) {
|
||||
_, err := models.Medias.GetByHash(ctx.Context(), md5)
|
||||
if err != nil && errors.Is(err, qrm.ErrNoRows) {
|
||||
preSign, err := up.oss.PreSignUpload(ctx.Context(), fmt.Sprintf("%s.%s", md5, ext))
|
||||
preSign, err := up.oss.PreSignUpload(ctx.Context(), fmt.Sprintf("%s.%s", md5, ext), mime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user