메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

PHP SDK 하위 수준 API를 사용한 파일 분할 업로드

이 단원에서는 파일을 분할하여 업로드하기 위해 PHP용 AWS SDK의 하위 수준 멀티파트 업로드 클래스를 사용하는 방법을 설명합니다.

참고

이미 PHP용 AWS SDK 사용 및 PHP 예제 실행의 지침에 따라 PHP용 AWS SDK가 올바르게 설치되어 있다고 가정합니다.

PHP SDK 하위 수준 API 멀티파트 파일 업로드 프로세스

1

Aws\S3\S3Client 클래스의 factory() 메서드를 사용하여 Amazon S3 클라이언트의 인스턴스를 만듭니다.

2

Aws\S3\S3Client::createMultipartUpload() 메서드를 실행하여 멀티파트 업로드를 시작합니다. array 파라미터의 필수 키인 BucketKey에 버킷 이름과 키 이름을 제공해야 합니다.

응답 본문의 UploadID를 검색하고 저장합니다. UploadID는 각 후속 멀티파트 업로드 작업에 사용됩니다.

3

파일의 끝에 도달할 때까지 각 파일 조각에 대해 Aws\S3\S3Client::uploadPart() 메서드를 실행하여 파일을 분할 업로드합니다. upload_part()의 필수 array 파라미터 키는 Bucket, Key, UploadIdPartNumber입니다. 각각의 연속된 파일 조각을 업로드하려면 upload_part()로의 각 후속 호출에 대한 PartNumber 키의 인수로서 전달된 값을 증가시켜야 합니다.

upload_part() 메서드 호출 각각의 응답을 어레이에 저장합니다. 각 응답은 멀티파트 업로드를 완료하기 위해 나중에 필요한 ETag 값을 포함합니다.

4

Aws\S3\S3Client::completeMultipartUpload() 메서드를 실행하여 멀티파트 업로드를 완료합니다. completeMultipartUpload()의 필수 array 파라미터는 Bucket, KeyUploadId입니다.

다음은 PHP SDK 하위 수준 API를 사용하여 파일을 분할 업로드하는 방법을 보여 주는 PHP 코드 예제입니다.

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $filename = '*** Path to and Name of the File to Upload ***'; // 1. Instantiate the client. $s3 = S3Client::factory(); // 2. Create a new multipart upload and get the upload ID. $response = $s3->createMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $keyname )); $uploadId = $response['UploadId']; // 3. Upload the file in parts. $file = fopen($filename, 'r'); $parts = array(); $partNumber = 1; while (!feof($file)) { $result = $s3->uploadPart(array( 'Bucket' => $bucket, 'Key' => $key, 'UploadId' => $uploadId, 'PartNumber' => $partNumber, 'Body' => fread($file, 5 * 1024 * 1024), )); $parts[] = array( 'PartNumber' => $partNumber++, 'ETag' => $result['ETag'], ); } // 4. Complete multipart upload. $result = $s3->completeMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $key, 'UploadId' => $uploadId, 'Parts' => $parts, )); $url = $result['Location']; fclose($file);

예 하위 수준 멀티파트 업로드 PHP SDK API를 사용한 Amazon S3 버킷으로의 파일 업로드

다음은 하위 수준 PHP API 멀티파트 업로드를 사용하여 Amazon S3 버킷에 파일을 업로드하는 PHP 코드 예제입니다. 이 가이드의 PHP 예제 실행에 대한 자세한 내용은 PHP 예제 실행 단원을 참조하십시오.

Copy
<?php // Include the AWS SDK using the Composer autoloader require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $filename = '*** Path to and Name of the File to Upload ***'; // 1. Instantiate the client. $s3 = S3Client::factory(); // 2. Create a new multipart upload and get the upload ID. $result = $s3->createMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $keyname, 'StorageClass' => 'REDUCED_REDUNDANCY', 'ACL' => 'public-read', 'Metadata' => array( 'param1' => 'value 1', 'param2' => 'value 2', 'param3' => 'value 3' ) )); $uploadId = $result['UploadId']; // 3. Upload the file in parts. try { $file = fopen($filename, 'r'); $parts = array(); $partNumber = 1; while (!feof($file)) { $result = $s3->uploadPart(array( 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, 'PartNumber' => $partNumber, 'Body' => fread($file, 5 * 1024 * 1024), )); $parts[] = array( 'PartNumber' => $partNumber++, 'ETag' => $result['ETag'], ); echo "Uploading part {$partNumber} of {$filename}.\n"; } fclose($file); } catch (S3Exception $e) { $result = $s3->abortMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId )); echo "Upload of {$filename} failed.\n"; } // 4. Complete multipart upload. $result = $s3->completeMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, 'Parts' => $parts, )); $url = $result['Location']; echo "Uploaded {$filename} to {$url}.\n";

관련 리소스

이 페이지에서: