mirror of https://github.com/gin-gonic/gin.git
Moved const 'defaultMemory' to attrib. Engine.MaxMultipartMemory instead. (#1100)
This commit is contained in:
parent
848fa41ca0
commit
c9b344118f
|
@ -277,6 +277,8 @@ References issue [#774](https://github.com/gin-gonic/gin/issues/774) and detail
|
||||||
```go
|
```go
|
||||||
func main() {
|
func main() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
// Set a lower memory limit for multipart forms (default is 32 MiB)
|
||||||
|
// router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
||||||
router.POST("/upload", func(c *gin.Context) {
|
router.POST("/upload", func(c *gin.Context) {
|
||||||
// single file
|
// single file
|
||||||
file, _ := c.FormFile("file")
|
file, _ := c.FormFile("file")
|
||||||
|
@ -306,6 +308,8 @@ See the detail [example code](examples/upload-file/multiple).
|
||||||
```go
|
```go
|
||||||
func main() {
|
func main() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
// Set a lower memory limit for multipart forms (default is 32 MiB)
|
||||||
|
// router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
||||||
router.POST("/upload", func(c *gin.Context) {
|
router.POST("/upload", func(c *gin.Context) {
|
||||||
// Multipart form
|
// Multipart form
|
||||||
form, _ := c.MultipartForm()
|
form, _ := c.MultipartForm()
|
||||||
|
|
|
@ -34,8 +34,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
defaultMemory = 32 << 20 // 32 MB
|
abortIndex int8 = math.MaxInt8 / 2
|
||||||
abortIndex int8 = math.MaxInt8 / 2
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Context is the most important part of gin. It allows us to pass variables between middleware,
|
// Context is the most important part of gin. It allows us to pass variables between middleware,
|
||||||
|
@ -407,7 +406,7 @@ func (c *Context) PostFormArray(key string) []string {
|
||||||
func (c *Context) GetPostFormArray(key string) ([]string, bool) {
|
func (c *Context) GetPostFormArray(key string) ([]string, bool) {
|
||||||
req := c.Request
|
req := c.Request
|
||||||
req.ParseForm()
|
req.ParseForm()
|
||||||
req.ParseMultipartForm(defaultMemory)
|
req.ParseMultipartForm(c.engine.MaxMultipartMemory)
|
||||||
if values := req.PostForm[key]; len(values) > 0 {
|
if values := req.PostForm[key]; len(values) > 0 {
|
||||||
return values, true
|
return values, true
|
||||||
}
|
}
|
||||||
|
@ -427,7 +426,7 @@ func (c *Context) FormFile(name string) (*multipart.FileHeader, error) {
|
||||||
|
|
||||||
// MultipartForm is the parsed multipart form, including file uploads.
|
// MultipartForm is the parsed multipart form, including file uploads.
|
||||||
func (c *Context) MultipartForm() (*multipart.Form, error) {
|
func (c *Context) MultipartForm() (*multipart.Form, error) {
|
||||||
err := c.Request.ParseMultipartForm(defaultMemory)
|
err := c.Request.ParseMultipartForm(c.engine.MaxMultipartMemory)
|
||||||
return c.Request.MultipartForm, err
|
return c.Request.MultipartForm, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@ import (
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
// Set a lower memory limit for multipart forms (default is 32 MiB)
|
||||||
|
router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
||||||
router.Static("/", "./public")
|
router.Static("/", "./public")
|
||||||
router.POST("/upload", func(c *gin.Context) {
|
router.POST("/upload", func(c *gin.Context) {
|
||||||
name := c.PostForm("name")
|
name := c.PostForm("name")
|
||||||
|
|
|
@ -9,6 +9,8 @@ import (
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
// Set a lower memory limit for multipart forms (default is 32 MiB)
|
||||||
|
router.MaxMultipartMemory = 8 << 20 // 8 MiB
|
||||||
router.Static("/", "./public")
|
router.Static("/", "./public")
|
||||||
router.POST("/upload", func(c *gin.Context) {
|
router.POST("/upload", func(c *gin.Context) {
|
||||||
name := c.PostForm("name")
|
name := c.PostForm("name")
|
||||||
|
|
10
gin.go
10
gin.go
|
@ -15,7 +15,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Version is Framework's version.
|
// Version is Framework's version.
|
||||||
const Version = "v1.2"
|
const (
|
||||||
|
Version = "v1.2"
|
||||||
|
defaultMultipartMemory = 32 << 20 // 32 MB
|
||||||
|
)
|
||||||
|
|
||||||
var default404Body = []byte("404 page not found")
|
var default404Body = []byte("404 page not found")
|
||||||
var default405Body = []byte("405 method not allowed")
|
var default405Body = []byte("405 method not allowed")
|
||||||
|
@ -92,6 +95,10 @@ type Engine struct {
|
||||||
// If UseRawPath is false (by default), the UnescapePathValues effectively is true,
|
// If UseRawPath is false (by default), the UnescapePathValues effectively is true,
|
||||||
// as url.Path gonna be used, which is already unescaped.
|
// as url.Path gonna be used, which is already unescaped.
|
||||||
UnescapePathValues bool
|
UnescapePathValues bool
|
||||||
|
|
||||||
|
// Value of 'maxMemory' param that is given to http.Request's ParseMultipartForm
|
||||||
|
// method call.
|
||||||
|
MaxMultipartMemory int64
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ IRouter = &Engine{}
|
var _ IRouter = &Engine{}
|
||||||
|
@ -120,6 +127,7 @@ func New() *Engine {
|
||||||
AppEngine: defaultAppEngine,
|
AppEngine: defaultAppEngine,
|
||||||
UseRawPath: false,
|
UseRawPath: false,
|
||||||
UnescapePathValues: true,
|
UnescapePathValues: true,
|
||||||
|
MaxMultipartMemory: defaultMultipartMemory,
|
||||||
trees: make(methodTrees, 0, 9),
|
trees: make(methodTrees, 0, 9),
|
||||||
delims: render.Delims{Left: "{{", Right: "}}"},
|
delims: render.Delims{Left: "{{", Right: "}}"},
|
||||||
secureJsonPrefix: "while(1);",
|
secureJsonPrefix: "while(1);",
|
||||||
|
|
Loading…
Reference in New Issue