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, }) }