我运行关于文件上传的 gin 示例,这个 repo 来自https://github.com/gin-gonic/examples/tree/5898505356e9064c49abb075eae89596a3c5cd67/upload-file/single。当我改变是极限 router.MaxMultipartMemory = 1 // 8 MiB但没有为上传大文件而醒来,任何人都知道这一点。package mainimport ( "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只是限制内存,不是针对文件上传文件大小,即使文件大小比这个大,也会写入临时文件。
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
也许MaxBytesReader可以提供帮助?
以下应强制将传入请求限制为 30MB
c.Request.Body = http.MaxBytesReader(c.Writer, c.Request.Body, int64(30<<20))
沧海一幻觉
TA贡献1824条经验 获得超5个赞
作为评论,代码
router.MaxMultipartMemory = 1 // 8 MiB
只是限制程序在上传文件时可以使用多少内存,而不是限制上传文件的大小。
- 2 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消