uploadFile.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package controller
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "log"
  6. "net/http"
  7. "path/filepath"
  8. )
  9. func UploadFile(r *gin.Context) {
  10. // 设置内存限制(默认是 32 MiB)
  11. err := r.Request.ParseMultipartForm(32 << 20) // 32 MB
  12. if err != nil {
  13. r.JSON(http.StatusBadRequest, gin.H{"error": "文件大小超过限制"})
  14. return
  15. }
  16. // 获取表单中的文件字段(假设字段名为 "files")
  17. form, _ := r.MultipartForm()
  18. files := form.File["files"] // "files" 是表单字段名
  19. // 遍历所有文件
  20. savedFiles := make([]string, 0)
  21. for _, fileHeader := range files {
  22. // 生成保存路径(示例:uploads/ 目录下)
  23. filename := filepath.Join("uploads", fileHeader.Filename)
  24. if err := r.SaveUploadedFile(fileHeader, filename); err != nil {
  25. log.Printf("保存文件失败: %v", err)
  26. continue // 跳过当前文件
  27. }
  28. savedFiles = append(savedFiles, filename)
  29. }
  30. r.JSON(http.StatusOK, gin.H{
  31. "message": fmt.Sprintf("%d 个文件上传成功", len(savedFiles)),
  32. "files": savedFiles,
  33. })
  34. }