@@ -201,28 +201,32 @@ private function listPartsPage($key, $uploadId, $partIndex, $parts = null)
201201
202202 https://github.com/transloadit/uppy/blob/master/packages/%40uppy/aws-s3-multipart/src/index.js#L104
203203
204- return this.client.get(`s3/multipart/${uploadId}/${number} ?key=${filename}`)
204+ return this.client.get(`s3/multipart/${uploadId}/batch ?key=${filename}&partNumbers=${partNumbers.join(',') }`)
205205 .then(assertServerError)
206206 */
207- public function prepareUploadPart (Request $ request , $ uploadId, $ partNumber )
207+ public function prepareUploadParts (Request $ request , $ uploadId )
208208 {
209209 $ key = $ this ->encodeURIComponent ($ request ->input ('key ' ));
210210
211- $ command = $ this ->client ->getCommand ('uploadPart ' , [
212- 'Bucket ' => $ this ->bucket ,
213- 'Key ' => $ key ,
214- 'UploadId ' => $ uploadId ,
215- 'PartNumber ' => $ partNumber ,
216- 'Body ' => '' ,
217- ]);
211+ $ partNumbers = explode (', ' , $ request ->input ('partNumbers ' ));
212+
213+ $ presignedUrls = [];
218214
219- $ presignedRequest = $ this ->client ->createPresignedRequest ($ command , config ('uppy-s3-multipart-upload.s3.presigned_url.expiry_time ' ));
215+ foreach ($ partNumbers as $ partNumber ) {
216+ $ command = $ this ->client ->getCommand ('uploadPart ' , [
217+ 'Bucket ' => $ this ->bucket ,
218+ 'Key ' => $ key ,
219+ 'UploadId ' => $ uploadId ,
220+ 'PartNumber ' => (int ) $ partNumber ,
221+ 'Body ' => '' ,
222+ ]);
220223
221- $ presignedUrl = (string ) $ presignedRequest ->getUri ();
224+ $ presignedUrls [$ partNumber ] = (string ) $ this ->client ->createPresignedRequest ($ command , config ('uppy-s3-multipart-upload.s3.presigned_url.expiry_time ' ))->getUri ();
225+ }
222226
223227 return response ()
224228 ->json ([
225- 'url ' => $ presignedUrl ,
229+ 'presignedUrls ' => $ presignedUrls ,
226230 ]);
227231 }
228232
0 commit comments