diff --git a/CHANGELOG.md b/CHANGELOG.md index b397d3a..bd65184 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,3 +17,31 @@ All notable changes to `laravel-uppy-s3-multipart-upload` will be documented in - Add S3 transfer acceleration configuration - Update README + +## 0.3.1 - 2021-02-27 + +- Move S3 transfer acceleration config to the package config file + +## 0.3.2 - 2021-02-28 + +- Update the way credentials are passed to use the Credentials class + +## 0.3.3 - 2021-03-03 + +- Remove passing credentials, assuming that AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set in the .env based on the AWS SDK suggestions + +## 0.3.4 - 2021-03-18 + +- Use Flysystem AWS client + +## 0.3.5 - 2021-09-15 + +- Add support for multiple Uppy instances +- Update README + +## 0.4 - 2021-09-20 + +- Upgrade Uppy from 1.x to 2.0 +- Add support for pre-sign URLs in batches +- Update README +- Add upgrade guide diff --git a/README.md b/README.md index 60c3afc..d6d8632 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,10 @@ Add on your `package.json` file the Uppy JS libraries and AlpineJS library: ... }, "dependencies": { - "@uppy/aws-s3-multipart": "^1.8.12", - "@uppy/core": "^1.16.0", - "@uppy/drag-drop": "^1.4.24", - "@uppy/status-bar": "^1.9.0", + "@uppy/aws-s3-multipart": "^2.0.2", + "@uppy/core": "^2.0.2", + "@uppy/drag-drop": "^2.0.1", + "@uppy/status-bar": "^2.0.1" ... } ... diff --git a/UPGRADE.md b/UPGRADE.md new file mode 100644 index 0000000..7c693a8 --- /dev/null +++ b/UPGRADE.md @@ -0,0 +1,31 @@ +# Upgrade Guide + +## Upgrading from 0.3.5 to 0.4.0 + +### To upgrade Uppy from 1.x to 2.0 + +Update the following dependencies on your `package.json`: + +```json +"dependencies": { + ... + "@uppy/aws-s3-multipart": "^2.0.2", + "@uppy/core": "^2.0.2", + "@uppy/drag-drop": "^2.0.1", + "@uppy/status-bar": "^2.0.1" +} +``` + +Install the dependencies and compile assets: + +```bash +npm install +npm run dev +``` + +Clear caches: + +```bash +php artisan optimize +php artisan view:clear +``` diff --git a/routes/web.php b/routes/web.php index 3009854..4312a70 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,7 +9,7 @@ Route::get('/s3/multipart/{uploadId}', [UppyS3MultipartController::class, 'getUploadedParts']); -Route::get('/s3/multipart/{uploadId}/{partNumber}', [UppyS3MultipartController::class, 'prepareUploadPart']); +Route::get('/s3/multipart/{uploadId}/batch', [UppyS3MultipartController::class, 'prepareUploadParts']); Route::post('/s3/multipart/{uploadId}/complete', [UppyS3MultipartController::class, 'completeMultipartUpload']); diff --git a/src/Http/Controllers/UppyS3MultipartController.php b/src/Http/Controllers/UppyS3MultipartController.php index baef2ec..b458c7c 100644 --- a/src/Http/Controllers/UppyS3MultipartController.php +++ b/src/Http/Controllers/UppyS3MultipartController.php @@ -201,28 +201,32 @@ private function listPartsPage($key, $uploadId, $partIndex, $parts = null) https://github.com/transloadit/uppy/blob/master/packages/%40uppy/aws-s3-multipart/src/index.js#L104 - return this.client.get(`s3/multipart/${uploadId}/${number}?key=${filename}`) + return this.client.get(`s3/multipart/${uploadId}/batch?key=${filename}&partNumbers=${partNumbers.join(',')}`) .then(assertServerError) */ - public function prepareUploadPart(Request $request, $uploadId, $partNumber) + public function prepareUploadParts(Request $request, $uploadId) { $key = $this->encodeURIComponent($request->input('key')); - $command = $this->client->getCommand('uploadPart', [ - 'Bucket' => $this->bucket, - 'Key' => $key, - 'UploadId' => $uploadId, - 'PartNumber' => $partNumber, - 'Body' => '', - ]); + $partNumbers = explode(',', $request->input('partNumbers')); + + $presignedUrls = []; - $presignedRequest = $this->client->createPresignedRequest($command, config('uppy-s3-multipart-upload.s3.presigned_url.expiry_time')); + foreach ($partNumbers as $partNumber) { + $command = $this->client->getCommand('uploadPart', [ + 'Bucket' => $this->bucket, + 'Key' => $key, + 'UploadId' => $uploadId, + 'PartNumber' => (int) $partNumber, + 'Body' => '', + ]); - $presignedUrl = (string) $presignedRequest->getUri(); + $presignedUrls[$partNumber] = (string) $this->client->createPresignedRequest($command, config('uppy-s3-multipart-upload.s3.presigned_url.expiry_time'))->getUri(); + } return response() ->json([ - 'url' => $presignedUrl, + 'presignedUrls' => $presignedUrls, ]); }