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