123456789101112131415161718192021222324252627282930313233343536373839 |
- package controller
- import (
- "fmt"
- "github.com/gin-gonic/gin"
- "log"
- "net/http"
- "path/filepath"
- )
- func UploadFile(r *gin.Context) {
- // 设置内存限制(默认是 32 MiB)
- err := r.Request.ParseMultipartForm(32 << 20) // 32 MB
- if err != nil {
- r.JSON(http.StatusBadRequest, gin.H{"error": "文件大小超过限制"})
- return
- }
- // 获取表单中的文件字段(假设字段名为 "files")
- form, _ := r.MultipartForm()
- files := form.File["files"] // "files" 是表单字段名
- // 遍历所有文件
- savedFiles := make([]string, 0)
- for _, fileHeader := range files {
- // 生成保存路径(示例:uploads/ 目录下)
- filename := filepath.Join("uploads", fileHeader.Filename)
- if err := r.SaveUploadedFile(fileHeader, filename); err != nil {
- log.Printf("保存文件失败: %v", err)
- continue // 跳过当前文件
- }
- savedFiles = append(savedFiles, filename)
- }
- r.JSON(http.StatusOK, gin.H{
- "message": fmt.Sprintf("%d 个文件上传成功", len(savedFiles)),
- "files": savedFiles,
- })
- }
|