@@ -37,7 +37,8 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ
3737 if (count ($ request ->files )) {
3838 $ boundary = $ this ->getMimeBoundary ();
3939 $ request ->headers ->set ('Content-Type ' , 'multipart/form-data; boundary= ' .$ boundary );
40- $ requestBody = $ this ->encodeMultipartFiles ($ boundary , $ request ->files );
40+ $ requestBody = $ this ->buildMultipartParameters ($ boundary , $ request ->request );
41+ $ requestBody .= $ this ->encodeMultipartFiles ($ boundary , $ request ->files );
4142 }
4243
4344 $ builder = ProcessBuilder::create ()
@@ -189,6 +190,21 @@ private function getUrlEncodedParameterBag(ParameterBag $bag)
189190 return http_build_query ($ bag ->all ());
190191 }
191192
193+ private function buildMultipartParameters ($ boundary , ParameterBag $ parameters )
194+ {
195+ $ mimeBoundary = '-- ' .$ boundary ."\r\n" ;
196+
197+ $ data = '' ;
198+ foreach ($ parameters ->all () as $ name => $ parameter ) {
199+ $ data .= $ mimeBoundary ;
200+ $ data .= $ this ->buildMultipartParameter ($ name , $ parameter );
201+ $ data .= $ mimeBoundary ;
202+ }
203+ $ data .= "\r\n" ;
204+
205+ return $ data ;
206+ }
207+
192208 private function encodeMultipartFiles ($ boundary , FileBag $ files )
193209 {
194210 $ mimeBoundary = '-- ' .$ boundary ."\r\n" ;
@@ -222,6 +238,17 @@ private function encodeMultipartFile($name, UploadedFile $file)
222238 return $ data ;
223239 }
224240
241+ private function buildMultipartParameter ($ fieldName , $ fieldValue )
242+ {
243+ $ eol = "\r\n" ;
244+
245+ $ data = '' ;
246+ $ data .= sprintf ('Content-Disposition: form-data; name="%s" ' ,$ fieldName );
247+ $ data .= $ eol . $ eol . $ fieldValue . $ eol ;
248+
249+ return $ data ;
250+ }
251+
225252 private function getMimeBoundary ()
226253 {
227254 return md5 ('cgi-http-kernel ' );
0 commit comments