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

멀티파트 업로드용 AWS PHP SDK(상위 수준 API) 사용

Amazon S3을 통해 대용량 파일을 분할하여 업로드할 수 있습니다. 멀티파트 업로드를 사용하려면 파일이 5GB보다 더 커야 합니다. PHP용 AWS SDK은 멀티파트 업로드를 간소화하는 상위 수준 Aws\S3\Model\MultipartUpload\UploadBuilder 클래스를 표시합니다.

Aws\S3\Model\MultipartUpload\UploadBuilder 클래스는 단순한 멀티파트 업로드에 가장 적합합니다. 멀티파트 업로드를 일시 중지했다 다시 시작해야 하거나 업로드 중에 조각 크기를 변경해야 하거나 혹은 데이터 크기를 미리 확인하지 않은 경우 하위 수준 PHP API를 사용해야 합니다. 자세한 내용은 멀티파트 업로드용 AWS PHP SDK(하위 수준 API) 사용 단원을 참조하십시오.

멀티파트 업로드에 대한 자세한 내용은 멀티파트 업로드 API를 사용한 객체 업로드 단원을 참조하십시오. 크기가 5GB 미만인 파일의 업로드에 대한 자세한 내용은 PHP용 AWS SDK를 사용하여 객체 업로드 단원을 참조하십시오.

상위 수준 멀티파트 업로드를 사용한 파일 업로드

이 단원에서는 멀티파트 파일 업로드를 위해 PHP용 AWS SDK의 상위 수준 Aws\S3\Model\MultipartUpload\UploadBuilder 클래스를 사용하는 방법을 설명합니다.

참고

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

상위 수준 멀티파트 파일 업로드 프로세스

1

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

2

Aws\Common\Model\MultipartUpload\AbstractUploadBuilder 클래스에서 상속되는 Amazon S3 Aws\S3\Model\MultipartUpload\UploadBuilder class newInstance() 메서드를 사용하여 UploadBuilder 인스턴스를 만듭니다. UploadBuilder 객체의 경우 setClient(), setBucket()setKey() 메서드를 사용하여 클라이언트, 버킷 이름 및 키 이름을 설정합니다. setSource() 메서드로 업로드하고자 하는 파일의 경로와 이름을 설정하십시오.

3

UploadBuilder 객체의 build() 메서드를 실행하여 사용자가 설정한 작성기 옵션에 따라 해당하는 업로더 전송 객체를 만듭니다. (전송 객체는 Aws\S3\Model\MultipartUpload\AbstractTransfer 클래스의 하위 클래스입니다.)

4

적성된 전송 객체의 upload() 메서드를 실행하여 업로드를 수행합니다.

다음은 상위 수준 UploadBuilder 객체를 사용하여 파일을 업로드하는 방법을 보여주는 PHP 코드 예제입니다.

Copy
use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

예 상위 수준 UploadBuilder를 사용한 Amazon S3 버킷으로의 멀티파트 업로드

다음은 Amazon S3 버킷에 파일을 업로드하는 PHP 예제입니다. 이 예제는 UploadBuilder 객체에 대한 고급 옵션을 설정하는 방법을 보여 줍니다. 예를 들어 멀티파트 업로드에 사용하고자 하는 조각 크기를 설정할 경우 setMinPartSize() 메서드를 사용하고, 선택 사항인 파일 메타데이터나 ACL(액세스 제어 목록)을 설정할 경우에는 setOption() 메서드를 사용할 수 있습니다.

또한, 이 예제는 UploadBuilder 객체의 setConcurrency() 메서드로 동시성 옵션을 설정하여 파일 조각들을 동시에 업로드하는 방법을 보여 줍니다. 예제에서는 전체 파일이 업로드될 때가지 세 조각을 동시에 업로드하려고 시도하는 전송 객체를 만듭니다. 이 가이드의 PHP 예제 실행에 대한 자세한 내용은 PHP 예제 실행 단원을 참조하십시오.

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->setMinPartSize(25 * 1024 * 1024) ->setOption('Metadata', array( 'param1' => 'value1', 'param2' => 'value2' )) ->setOption('ACL', 'public-read') ->setConcurrency(3) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

관련 리소스

이 페이지에서: