v1
This commit is contained in:
@@ -3,32 +3,27 @@ package upload
|
||||
import (
|
||||
v1 "management/internal/erpserver/service/v1"
|
||||
"management/internal/pkg/config"
|
||||
"management/internal/pkg/mid"
|
||||
"management/internal/pkg/render"
|
||||
"management/internal/pkg/session"
|
||||
"management/internal/tasks"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Conf *config.Config
|
||||
Log *logger.Logger
|
||||
Sm session.Manager
|
||||
Render render.Renderer
|
||||
TaskDistributor tasks.TaskDistributor
|
||||
MenuService v1.MenuService
|
||||
}
|
||||
|
||||
func Routes(r chi.Router, cfg Config) {
|
||||
func Routes(r *gin.RouterGroup, cfg Config) {
|
||||
app := newApp(cfg.Log, cfg.Render)
|
||||
|
||||
r.Route("/upload", func(r chi.Router) {
|
||||
r.Use(mid.Authorize(cfg.Sm, cfg.MenuService))
|
||||
r.Use(mid.Audit(cfg.Sm, cfg.Log, cfg.TaskDistributor))
|
||||
r.Post("/img", app.img)
|
||||
r.Post("/file", app.file)
|
||||
r.Post("/multi_files", app.multiFiles)
|
||||
r.Group("/upload", func(ctx *gin.Context) {
|
||||
r.POST("/img", app.img)
|
||||
r.POST("/file", app.file)
|
||||
r.POST("/multi_files", app.multiFiles)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package upload
|
||||
|
||||
import (
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
|
||||
fileutil "management/internal/pkg/file"
|
||||
"management/internal/pkg/gin/gu"
|
||||
"management/internal/pkg/render"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type app struct {
|
||||
@@ -23,52 +23,36 @@ func newApp(log *logger.Logger, render render.Renderer) *app {
|
||||
}
|
||||
}
|
||||
|
||||
const maxImageSize = 100 << 20 // 100 MB
|
||||
|
||||
func (a *app) img(w http.ResponseWriter, r *http.Request) {
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
a.log.Error(err.Error(), err)
|
||||
}
|
||||
}(r.Body)
|
||||
|
||||
_, fh, err := r.FormFile("files")
|
||||
func (a *app) img(ctx *gin.Context) {
|
||||
fh, err := ctx.FormFile("files")
|
||||
if err != nil {
|
||||
a.render.JSONErr(w, err.Error())
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
path, err := fileutil.UploadFile(fh, fileutil.IMG)
|
||||
if err != nil {
|
||||
a.render.JSONErr(w, err.Error())
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
a.render.JSONObj(w, "ok", path)
|
||||
gu.Ok(ctx, path)
|
||||
}
|
||||
|
||||
func (a *app) file(w http.ResponseWriter, r *http.Request) {
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
a.log.Error(err.Error(), err)
|
||||
}
|
||||
}(r.Body)
|
||||
|
||||
_, fh, err := r.FormFile("files")
|
||||
func (a *app) file(ctx *gin.Context) {
|
||||
fh, err := ctx.FormFile("files")
|
||||
if err != nil {
|
||||
a.render.JSONErr(w, err.Error())
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
path, err := fileutil.UploadFile(fh, fileutil.ALL)
|
||||
if err != nil {
|
||||
a.render.JSONErr(w, err.Error())
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
a.render.JSONObj(w, "ok", path)
|
||||
gu.Ok(ctx, path)
|
||||
}
|
||||
|
||||
type FileRes struct {
|
||||
@@ -76,19 +60,14 @@ type FileRes struct {
|
||||
Path string `json:"path"`
|
||||
}
|
||||
|
||||
func (a *app) multiFiles(w http.ResponseWriter, r *http.Request) {
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
a.log.Error(err.Error(), err)
|
||||
}
|
||||
}(r.Body)
|
||||
|
||||
err := r.ParseMultipartForm(int64(maxImageSize))
|
||||
func (a *app) multiFiles(ctx *gin.Context) {
|
||||
form, err := ctx.MultipartForm()
|
||||
if err != nil {
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
files := r.MultipartForm.File["files"]
|
||||
|
||||
files := form.File["files"]
|
||||
|
||||
var res []FileRes
|
||||
c := make(chan FileRes, 2)
|
||||
@@ -100,7 +79,7 @@ func (a *app) multiFiles(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
filePath, err := fileutil.UploadFile(item, fileutil.ALL)
|
||||
if err != nil {
|
||||
a.render.JSONErr(w, err.Error())
|
||||
gu.Failed(ctx, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
@@ -119,5 +98,5 @@ func (a *app) multiFiles(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
a.render.JSONObj(w, "ok", res)
|
||||
gu.Ok(ctx, res)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user