From 88d47a1d9f331cb21301863239524e48ea629469 Mon Sep 17 00:00:00 2001 From: Misko Lee Date: Thu, 26 Oct 2017 23:25:08 +0800 Subject: [PATCH] 1. allow parse form before call binding.Bind() --- binding.go | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) 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) }