Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awsdocs
GitHub Repository: awsdocs/amazon-s3-developer-guide
Path: blob/master/code_examples/php_examples/S3examples/s3-multipart-upload-using-lowlevel-php-sdk-api.php
4084 views
1
<?php
2
// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE )
4
5
require 'vendor/autoload.php';
6
7
use Aws\S3\S3Client;
8
9
$bucket = '*** Your Bucket Name ***';
10
$keyname = '*** Your Object Key ***';
11
$filename = '*** Path to and Name of the File to Upload ***';
12
13
$s3 = new S3Client([
14
'version' => 'latest',
15
'region' => 'us-east-1'
16
]);
17
18
$result = $s3->createMultipartUpload([
19
'Bucket' => $bucket,
20
'Key' => $keyname,
21
'StorageClass' => 'REDUCED_REDUNDANCY',
22
'ACL' => 'public-read',
23
'Metadata' => [
24
'param1' => 'value 1',
25
'param2' => 'value 2',
26
'param3' => 'value 3'
27
]
28
]);
29
$uploadId = $result['UploadId'];
30
31
// Upload the file in parts.
32
try {
33
$file = fopen($filename, 'r');
34
$partNumber = 1;
35
while (!feof($file)) {
36
$result = $s3->uploadPart([
37
'Bucket' => $bucket,
38
'Key' => $keyname,
39
'UploadId' => $uploadId,
40
'PartNumber' => $partNumber,
41
'Body' => fread($file, 5 * 1024 * 1024),
42
]);
43
$parts['Parts'][$partNumber] = [
44
'PartNumber' => $partNumber,
45
'ETag' => $result['ETag'],
46
];
47
$partNumber++;
48
49
echo "Uploading part {$partNumber} of {$filename}." . PHP_EOL;
50
}
51
fclose($file);
52
} catch (S3Exception $e) {
53
$result = $s3->abortMultipartUpload([
54
'Bucket' => $bucket,
55
'Key' => $keyname,
56
'UploadId' => $uploadId
57
]);
58
59
echo "Upload of {$filename} failed." . PHP_EOL;
60
}
61
62
// Complete the multipart upload.
63
$result = $s3->completeMultipartUpload([
64
'Bucket' => $bucket,
65
'Key' => $keyname,
66
'UploadId' => $uploadId,
67
'MultipartUpload' => $parts,
68
]);
69
$url = $result['Location'];
70
71
echo "Uploaded {$filename} to {$url}." . PHP_EOL;
72
73