MCPcopy
hub / github.com/pocketbase/pocketbase / toMultipart

Method toMultipart

plugins/jsvm/form_data.go:107–149  ·  view source on GitHub ↗

toMultipart converts the current FormData entries into multipart encoded data.

()

Source from the content-addressed store, hash-verified

105
106// toMultipart converts the current FormData entries into multipart encoded data.
107func (data FormData) toMultipart() (*bytes.Buffer, *multipart.Writer, error) {
108 body := new(bytes.Buffer)
109
110 mp := multipart.NewWriter(body)
111 defer mp.Close()
112
113 for k, values := range data {
114 for _, rawValue := range values {
115 switch v := rawValue.(type) {
116 case *filesystem.File:
117 err := func() error {
118 mpw, err := mp.CreateFormFile(k, v.OriginalName)
119 if err != nil {
120 return err
121 }
122
123 file, err := v.Reader.Open()
124 if err != nil {
125 return err
126 }
127 defer file.Close()
128
129 _, err = io.Copy(mpw, file)
130 if err != nil {
131 return err
132 }
133
134 return nil
135 }()
136 if err != nil {
137 return nil, nil, err
138 }
139 default:
140 err := mp.WriteField(k, cast.ToString(v))
141 if err != nil {
142 return nil, nil, err
143 }
144 }
145 }
146 }
147
148 return body, mp, nil
149}

Callers 2

TestFormDataToMultipartFunction · 0.95
BindHTTPFunction · 0.80

Calls 5

CloseMethod · 0.95
NewWriterMethod · 0.80
OpenMethod · 0.65
CloseMethod · 0.65
CopyMethod · 0.65

Tested by 1

TestFormDataToMultipartFunction · 0.76