diff --git a/binding.go b/binding.go index 21d14a2..1f7677b 100644 --- a/binding.go +++ b/binding.go @@ -113,19 +113,22 @@ var multipartFormBinder requestBinder = defaultMultipartFormBinder func defaultMultipartFormBinder(req *http.Request, userStruct FieldMapper) Errors { var errs Errors - multipartReader, err := req.MultipartReader() - if err != nil { - errs.Add([]string{}, DeserializationError, err.Error()) - return errs - } + if req.MultipartForm == nil { - form, parseErr := multipartReader.ReadForm(MaxMemory) - if parseErr != nil { - errs.Add([]string{}, DeserializationError, parseErr.Error()) - return errs - } + multipartReader, err := req.MultipartReader() + if err != nil { + errs.Add([]string{}, DeserializationError, err.Error()) + return errs + } - req.MultipartForm = form + form, parseErr := multipartReader.ReadForm(MaxMemory) + if parseErr != nil { + errs.Add([]string{}, DeserializationError, parseErr.Error()) + return errs + } + + req.MultipartForm = form + } return bindForm(req, userStruct, req.MultipartForm.Value, req.MultipartForm.File) }