@@ -123,14 +123,32 @@ protected function post($path, array $parameters = array(), $requestHeaders = ar
123
123
* @param array $requestHeaders
124
124
* @return mixed
125
125
*/
126
- protected function put ($ path , array $ parameters = array (), $ requestHeaders = array ())
126
+ protected function put ($ path , array $ parameters = array (), $ requestHeaders = array (), array $ files = array () )
127
127
{
128
128
$ path = $ this ->preparePath ($ path );
129
129
130
130
$ body = null ;
131
- if (!empty ($ parameters )) {
131
+ if (empty ( $ files ) && !empty ($ parameters )) {
132
132
$ body = $ this ->prepareBody ($ parameters );
133
133
$ 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 ();
134
152
}
135
153
136
154
$ response = $ this ->client ->getHttpClient ()->put ($ path , $ requestHeaders , $ body );
0 commit comments