为了账号安全,请及时绑定邮箱和手机立即绑定

gin web框架限制上传文件大小不起作用

gin web框架限制上传文件大小不起作用

Go
红颜莎娜 2023-06-19 15:14:59
我运行关于文件上传的 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))


查看完整回答
反对 回复 2023-06-19
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

作为评论,代码

  router.MaxMultipartMemory = 1 // 8 MiB

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


查看完整回答
反对 回复 2023-06-19
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信