init
This commit is contained in:
49
bbs-go/server/internal/controllers/api/upload_controller.go
Normal file
49
bbs-go/server/internal/controllers/api/upload_controller.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"bbs-go/internal/models/constants"
|
||||
"bbs-go/internal/pkg/uploader"
|
||||
"io"
|
||||
"log/slog"
|
||||
"strconv"
|
||||
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/mlogclub/simple/web"
|
||||
|
||||
"bbs-go/internal/services"
|
||||
)
|
||||
|
||||
type UploadController struct {
|
||||
Ctx iris.Context
|
||||
}
|
||||
|
||||
func (c *UploadController) Post() *web.JsonResult {
|
||||
user := services.UserTokenService.GetCurrent(c.Ctx)
|
||||
if err := services.UserService.CheckPostStatus(user); err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
|
||||
file, header, err := c.Ctx.FormFile("image")
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
if header.Size > constants.UploadMaxBytes {
|
||||
return web.JsonErrorMsg("图片不能超过" + strconv.Itoa(constants.UploadMaxM) + "M")
|
||||
}
|
||||
|
||||
contentType := header.Header.Get("Content-Type")
|
||||
fileBytes, err := io.ReadAll(file)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
|
||||
slog.Info("上传文件:", slog.Any("filename", header.Filename), slog.Any("size", header.Size))
|
||||
|
||||
url, err := uploader.PutImage(fileBytes, contentType)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return web.NewEmptyRspBuilder().Put("url", url).JsonResult()
|
||||
}
|
||||
Reference in New Issue
Block a user