@@ -123,14 +123,32 @@ protected function post($path, array $parameters = array(), $requestHeaders = ar
123123 * @param array $requestHeaders
124124 * @return mixed
125125 */
126- protected function put ($ path , array $ parameters = array (), $ requestHeaders = array ())
126+ protected function put ($ path , array $ parameters = array (), $ requestHeaders = array (), array $ files = array () )
127127 {
128128 $ path = $ this ->preparePath ($ path );
129129
130130 $ body = null ;
131- if (!empty ($ parameters )) {
131+ if (empty ( $ files ) && !empty ($ parameters )) {
132132 $ body = $ this ->prepareBody ($ parameters );
133133 $ requestHeaders ['Content-Type ' ] = 'application/x-www-form-urlencoded ' ;
134+ } elseif (!empty ($ files )) {
135+ $ builder = new MultipartStreamBuilder ($ this ->streamFactory );
136+
137+ foreach ($ parameters as $ name => $ value ) {
138+ $ builder ->addResource ($ name , $ value );
139+ }
140+
141+ foreach ($ files as $ name => $ file ) {
142+ $ builder ->addResource ($ name , fopen ($ file , 'r ' ), [
143+ 'headers ' => [
144+ 'Content-Type ' => $ this ->guessContentType ($ file ),
145+ ],
146+ 'filename ' => basename ($ file ),
147+ ]);
148+ }
149+
150+ $ body = $ builder ->build ();
151+ $ requestHeaders ['Content-Type ' ] = 'multipart/form-data; boundary= ' .$ builder ->getBoundary ();
134152 }
135153
136154 $ response = $ this ->client ->getHttpClient ()->put ($ path , $ requestHeaders , $ body );
0 commit comments