我運行關于文件上傳的 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")}我希望當文件大小大于限制時,應該會出現(xiàn)錯誤。更新誤會,MaxMultipartMemory只是限制內(nèi)存,不是針對文件上傳文件大小,即使文件大小比這個大,也會寫入臨時文件。
2 回答

慕運維8079593
TA貢獻1876條經(jīng)驗 獲得超5個贊
也許MaxBytesReader可以提供幫助?
以下應強制將傳入請求限制為 30MB
c.Request.Body?=?http.MaxBytesReader(c.Writer,?c.Request.Body,?int64(30<<20))

滄海一幻覺
TA貢獻1824條經(jīng)驗 獲得超5個贊
作為評論,代碼
router.MaxMultipartMemory = 1 // 8 MiB
只是限制程序在上傳文件時可以使用多少內(nèi)存,而不是限制上傳文件的大小。
- 2 回答
- 0 關注
- 292 瀏覽
添加回答
舉報
0/150
提交
取消