feat(admin): 添加用户上传图片功能及相关页面

- 新增用户添加页面路由 /user/add 和文件上传处理路由 /user/doUpload
- 实现文件上传表单页面 admin/useradd.html
- 在 UserController 中添加 Add 方法渲染上传页面
- 在 UserController 中添加 DoUpload 方法处理文件上传及保存
- 在中间件添加 c.Next() 确保请求链继续执行
This commit is contained in:
2026-02-23 15:11:03 +08:00
parent ae36d59b68
commit a81fbb724e
4 changed files with 65 additions and 1 deletions

View File

@@ -1,6 +1,11 @@
package admin
import "github.com/gin-gonic/gin"
import (
"os"
"path/filepath"
"github.com/gin-gonic/gin"
)
type UserController struct {
BaseController
@@ -10,6 +15,38 @@ func (con UserController) Index(c *gin.Context) {
con.Success(c)
}
func (con UserController) Add(c *gin.Context) {
c.HTML(200, "admin/useradd", gin.H{})
}
func (con UserController) Show(c *gin.Context) {
c.String(200, "管理员用户详情")
}
func (con UserController) DoUpload(c *gin.Context) {
username := c.PostForm("username")
file, err := c.FormFile("face")
if err != nil {
c.JSON(400, gin.H{"error": "获取文件失败: " + err.Error()})
return
}
uploadDir := "./upload"
if err := os.MkdirAll(uploadDir, os.ModePerm); err != nil {
c.JSON(500, gin.H{"error": "创建目录失败: " + err.Error()})
return
}
dst := filepath.Join(uploadDir, file.Filename)
if err := c.SaveUploadedFile(file, dst); err != nil {
c.JSON(500, gin.H{"error": "保存文件失败: " + err.Error()})
return
}
c.JSON(200, gin.H{
"success": true,
"username": username,
"dst": dst,
})
}

View File

@@ -19,4 +19,6 @@ func InitMiddleware(c *gin.Context) {
time.Sleep(1 * time.Second)
fmt.Println("统计信息" + cCp.Request.URL.Path)
}()
c.Next()
}

View File

@@ -12,6 +12,8 @@ func AdminRouterInit(r *gin.Engine) {
{
adminRouter.GET("", admin.IndexController{}.Index)
adminRouter.GET("/user/add", admin.UserController{}.Add)
adminRouter.GET("/plist", admin.IndexController{}.Plist)
adminRouter.GET("/login", admin.IndexController{}.Login)
@@ -20,6 +22,8 @@ func AdminRouterInit(r *gin.Engine) {
adminRouter.GET("/user", admin.UserController{}.Index)
adminRouter.POST("/user/doUpload", admin.UserController{}.DoUpload)
adminRouter.GET("/user/:id", admin.UserController{}.Show)
}
}

View File

@@ -0,0 +1,21 @@
{{ define "admin/useradd" }}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>演示文件上传</h1>
<form action="/admin/user/doUpload" method="post" enctype="multipart/form-data">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" placeholder="用户名">
<br>
<label for="face">头 像:</label>
<input type="file" id="face" name="face">
<br>
<input type="submit" value="上传">
</form>
</body>
</html>
{{ end }}