From d1b1b3b5aa897798e00dac7757b7b04140b8116f Mon Sep 17 00:00:00 2001 From: tavo Date: Wed, 2 Jul 2025 11:16:51 -0600 Subject: [PATCH] support multipart --- forms/forms.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/forms/forms.go b/forms/forms.go index a48fbc1..b95ad04 100644 --- a/forms/forms.go +++ b/forms/forms.go @@ -12,12 +12,18 @@ import ( func FormToStruct[T any](r *http.Request) (T, error) { var target T - if err := r.ParseForm(); err != nil { - return target, fmt.Errorf("error parsing form: %v", err) + ct := r.Header.Get("Content-Type") + if strings.HasPrefix(ct, "multipart/form-data") { + if err := r.ParseMultipartForm(32 << 20); err != nil { + return target, fmt.Errorf("error parsing multipart form: %v", err) + } + } else { + if err := r.ParseForm(); err != nil { + return target, fmt.Errorf("error parsing form: %v", err) + } } - err := UrlValuesToStruct(r.Form, &target) - return target, err + return target, UrlValuesToStruct(r.Form, &target) } func UrlValuesToStruct(form url.Values, dst any) error {