1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <form action="http://localhost:8000/upload" method="post" enctype="multipart/form-data">
    11. 上传文件:<input type="file" name="files" multiple>
    12. <input type="submit" value="提交">
    13. </form>
    14. </body>
    15. </html>
    1. package main
    2. import (
    3. "github.com/gin-gonic/gin"
    4. "net/http"
    5. "fmt"
    6. )
    7. // gin的helloWorld
    8. func main() {
    9. // 1.创建路由
    10. // 默认使用了2个中间件Logger(), Recovery()
    11. r := gin.Default()
    12. // 限制表单上传大小 8MB,默认为32MB
    13. r.MaxMultipartMemory = 8 << 20
    14. r.POST("/upload", func(c *gin.Context) {
    15. form, err := c.MultipartForm()
    16. if err != nil {
    17. c.String(http.StatusBadRequest, fmt.Sprintf("get err %s", err.Error()))
    18. }
    19. // 获取所有图片
    20. files := form.File["files"]
    21. // 遍历所有图片
    22. for _, file := range files {
    23. // 逐个存
    24. if err := c.SaveUploadedFile(file, file.Filename); err != nil {
    25. c.String(http.StatusBadRequest, fmt.Sprintf("upload err %s", err.Error()))
    26. return
    27. }
    28. }
    29. c.String(200, fmt.Sprintf("upload ok %d files", len(files)))
    30. })
    31. //默认端口号是8080
    32. r.Run(":8000")
    33. }

    效果演示:
    上传多个文件 - 图1
    上传多个文件 - 图2