杜松子酒的web框架限制上传文件大小不起作用

时间:2019-05-15 06:55:31

标签: go

我运行有关文件上传的杜松子酒示例,此仓库来自https://github.com/gin-gonic/examples/tree/5898505356e9064c49abb075eae89596a3c5cd67/upload-file/single。 当我更改是极限

    router.MaxMultipartMemory = 1 // 8 MiB

但不愿意上传大文件,任何人都知道。

package main

import (
    "fmt"
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {

    router := gin.Default()
    // Set a lower memory limit for multipart forms (default is 32 MiB)
    router.MaxMultipartMemory = 1 // 8 MiB
    fmt.Println(router.MaxMultipartMemory)

    router.Static("/", "./public")
    router.POST("/upload", func(c *gin.Context) {
        ct := c.Request.Header.Get("Content-Type")
        fmt.Println(ct)
        name := c.PostForm("name")
        email := c.PostForm("email")
        // Source
        file, err := c.FormFile("file")
        if err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
            return
        }

        if err := c.SaveUploadedFile(file, file.Filename); err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
            return
        }

        c.String(http.StatusOK, fmt.Sprintf("File %s uploaded successfully with fields name=%s and email=%s.", file.Filename, name, email))
    })
    router.Run(":8080")
}

我希望文件大小大于限制时,应该出现错误。

更新

误会是,MaxMultipartMemory只会限制内存,而不是用于文件上传文件大小,即使文件大小大于此大小,也会写入临时文件。

1 个答案:

答案 0 :(得分:0)

作为注释,代码

  router.MaxMultipartMemory = 1 // 8 MiB

仅限制程序可以在上传文件时使用多少内存,而不限制上传文件的大小。