support multipart
This commit is contained in:
parent
5df2e006e0
commit
d1b1b3b5aa
1 changed files with 10 additions and 4 deletions
|
@ -12,12 +12,18 @@ import (
|
||||||
func FormToStruct[T any](r *http.Request) (T, error) {
|
func FormToStruct[T any](r *http.Request) (T, error) {
|
||||||
var target T
|
var target T
|
||||||
|
|
||||||
|
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 {
|
if err := r.ParseForm(); err != nil {
|
||||||
return target, fmt.Errorf("error parsing form: %v", err)
|
return target, fmt.Errorf("error parsing form: %v", err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err := UrlValuesToStruct(r.Form, &target)
|
return target, UrlValuesToStruct(r.Form, &target)
|
||||||
return target, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func UrlValuesToStruct(form url.Values, dst any) error {
|
func UrlValuesToStruct(form url.Values, dst any) error {
|
||||||
|
|
Loading…
Reference in a new issue