support multipart

This commit is contained in:
tavo 2025-07-02 11:16:51 -06:00
parent 5df2e006e0
commit d1b1b3b5aa

View file

@ -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 {