Added support multipart/form-data #109
This commit is contained in:
		
				
					committed by
					
						 Javier Provecho Fernandez
						Javier Provecho Fernandez
					
				
			
			
				
	
			
			
			
						parent
						
							0f46ae2b81
						
					
				
				
					commit
					0fb7bed1c0
				
			| @ -25,14 +25,20 @@ type ( | ||||
| 	// XML binding | ||||
| 	xmlBinding struct{} | ||||
|  | ||||
| 	// // form binding | ||||
| 	// form binding | ||||
| 	formBinding struct{} | ||||
|  | ||||
| 	// multipart form binding | ||||
| 	multipartFormBinding struct{} | ||||
| ) | ||||
|  | ||||
| const MAX_MEMORY = 1 * 1024 * 1024 | ||||
|  | ||||
| var ( | ||||
| 	JSON = jsonBinding{} | ||||
| 	XML  = xmlBinding{} | ||||
| 	Form = formBinding{} // todo | ||||
| 	JSON          = jsonBinding{} | ||||
| 	XML           = xmlBinding{} | ||||
| 	Form          = formBinding{} // todo | ||||
| 	MultipartForm = multipartFormBinding{} | ||||
| ) | ||||
|  | ||||
| func (_ jsonBinding) Bind(req *http.Request, obj interface{}) error { | ||||
| @ -63,6 +69,16 @@ func (_ formBinding) Bind(req *http.Request, obj interface{}) error { | ||||
| 	return Validate(obj) | ||||
| } | ||||
|  | ||||
| func (_ multipartFormBinding) Bind(req *http.Request, obj interface{}) error { | ||||
| 	if err := req.ParseMultipartForm(MAX_MEMORY); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if err := mapForm(obj, req.Form); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return Validate(obj) | ||||
| } | ||||
|  | ||||
| func mapForm(ptr interface{}, form map[string][]string) error { | ||||
| 	typ := reflect.TypeOf(ptr).Elem() | ||||
| 	formStruct := reflect.ValueOf(ptr).Elem() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user