Skip to content

Commit d124b29

Browse files
authored
Merge pull request #6 from TappNetwork/upgrade_to_uppy_v2
Upgrade to Uppy v2 to pre-sign URLs in batches
2 parents 23f23fe + 14b2937 commit d124b29

File tree

5 files changed

+80
-17
lines changed

5 files changed

+80
-17
lines changed

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,31 @@ All notable changes to `laravel-uppy-s3-multipart-upload` will be documented in
1717

1818
- Add S3 transfer acceleration configuration
1919
- Update README
20+
21+
## 0.3.1 - 2021-02-27
22+
23+
- Move S3 transfer acceleration config to the package config file
24+
25+
## 0.3.2 - 2021-02-28
26+
27+
- Update the way credentials are passed to use the Credentials class
28+
29+
## 0.3.3 - 2021-03-03
30+
31+
- 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
32+
33+
## 0.3.4 - 2021-03-18
34+
35+
- Use Flysystem AWS client
36+
37+
## 0.3.5 - 2021-09-15
38+
39+
- Add support for multiple Uppy instances
40+
- Update README
41+
42+
## 0.4 - 2021-09-20
43+
44+
- Upgrade Uppy from 1.x to 2.0
45+
- Add support for pre-sign URLs in batches
46+
- Update README
47+
- Add upgrade guide

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ Add on your `package.json` file the Uppy JS libraries and AlpineJS library:
5050
...
5151
},
5252
"dependencies": {
53-
"@uppy/aws-s3-multipart": "^1.8.12",
54-
"@uppy/core": "^1.16.0",
55-
"@uppy/drag-drop": "^1.4.24",
56-
"@uppy/status-bar": "^1.9.0",
53+
"@uppy/aws-s3-multipart": "^2.0.2",
54+
"@uppy/core": "^2.0.2",
55+
"@uppy/drag-drop": "^2.0.1",
56+
"@uppy/status-bar": "^2.0.1"
5757
...
5858
}
5959
...

UPGRADE.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Upgrade Guide
2+
3+
## Upgrading from 0.3.5 to 0.4.0
4+
5+
### To upgrade Uppy from 1.x to 2.0
6+
7+
Update the following dependencies on your `package.json`:
8+
9+
```json
10+
"dependencies": {
11+
...
12+
"@uppy/aws-s3-multipart": "^2.0.2",
13+
"@uppy/core": "^2.0.2",
14+
"@uppy/drag-drop": "^2.0.1",
15+
"@uppy/status-bar": "^2.0.1"
16+
}
17+
```
18+
19+
Install the dependencies and compile assets:
20+
21+
```bash
22+
npm install
23+
npm run dev
24+
```
25+
26+
Clear caches:
27+
28+
```bash
29+
php artisan optimize
30+
php artisan view:clear
31+
```

routes/web.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
Route::get('/s3/multipart/{uploadId}', [UppyS3MultipartController::class, 'getUploadedParts']);
1111

12-
Route::get('/s3/multipart/{uploadId}/{partNumber}', [UppyS3MultipartController::class, 'prepareUploadPart']);
12+
Route::get('/s3/multipart/{uploadId}/batch', [UppyS3MultipartController::class, 'prepareUploadParts']);
1313

1414
Route::post('/s3/multipart/{uploadId}/complete', [UppyS3MultipartController::class, 'completeMultipartUpload']);
1515

src/Http/Controllers/UppyS3MultipartController.php

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)