MCPcopy
hub / github.com/gin-gonic/gin / setByMultipartFormFile

Function setByMultipartFormFile

binding/multipart_form_mapping.go:35–61  ·  view source on GitHub ↗
(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader)

Source from the content-addressed store, hash-verified

33}
34
35func setByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {
36 switch value.Kind() {
37 case reflect.Ptr:
38 switch value.Interface().(type) {
39 case *multipart.FileHeader:
40 value.Set(reflect.ValueOf(files[0]))
41 return true, nil
42 }
43 case reflect.Struct:
44 switch value.Interface().(type) {
45 case multipart.FileHeader:
46 value.Set(reflect.ValueOf(*files[0]))
47 return true, nil
48 }
49 case reflect.Slice:
50 slice := reflect.MakeSlice(value.Type(), len(files), len(files))
51 isSet, err = setArrayOfMultipartFormFiles(slice, field, files)
52 if err != nil || !isSet {
53 return isSet, err
54 }
55 value.Set(slice)
56 return true, nil
57 case reflect.Array:
58 return setArrayOfMultipartFormFiles(value, field, files)
59 }
60 return false, ErrMultiFileHeader
61}
62
63func setArrayOfMultipartFormFiles(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {
64 if value.Len() != len(files) {

Callers 2

TrySetMethod · 0.85

Calls 3

SetMethod · 0.80
TypeMethod · 0.80

Tested by

no test coverage detected