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

디렉터리 업로드

TransferUtility 클래스를 사용하여 전체 디렉터리를 업로드할 수도 있습니다. 기본적으로 Amazon S3는 지정된 디렉터리의 루트에서만 파일을 업로드합니다. 하지만 모든 하위 디렉터리에서 반복적으로 파일을 업로드하도록 지정할 수 있습니다.

또한 일부 필터링 기준에 따라 지정된 디렉터리에서 파일을 선택하는 필터링 표현식을 지정할 수도 수 있습니다. 예를 들어 디렉터리에서 .pdf 파일만 업로드하려면 "*.pdf" 필터 표현식을 지정합니다.

디렉터리에서 파일을 업로드할 경우 객체의 키 이름을 지정할 수 없습니다. 이는 디렉터리의 파일 위치와 파일 이름으로 구성됩니다. 다음과 같은 구조의 c:\myfolder 디렉터리를 예로 들어 보겠습니다.

Copy
C:\myfolder \a.txt \b.pdf \media\ An.mp3

이 디렉터리를 업로드하는 경우, Amazon S3는 다음 키 이름을 사용합니다.

Copy
a.txt b.pdf media/An.mp3

다음 작업은 상위 수준 .NET 클래스를 사용하여 디렉터리를 업로드하는 방법을 보여 줍니다.

상위 수준 API 디렉터리 업로드 프로세스

1

AWS 자격 증명을 제공하여 TransferUtility 클래스의 인스턴스를 만듭니다.

2

TransferUtility.UploadDirectory 오버로드 중 하나를 실행합니다.

다음은 위에서 설명한 작업을 실행하는 C# 코드 예제입니다.

Copy
TransferUtility utility = new TransferUtility(); utility.UploadDirectory(directoryPath, existingBucketName);

다음 C# 코드 예제는 Amazon S3 버킷에 디렉터리를 업로드합니다. 이 예제는 다양한 TransferUtility.UploadDirectory 오버로드를 사용하여 디렉터리 업로드 방법을 보여 줍니다. 업로드에 대한 연속적인 호출로 이전 업로드를 교체합니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 .NET 코드 예제 테스트를 참조하십시오.

Copy
using System; using System.IO; using Amazon.S3; using Amazon.S3.Transfer; namespace s3.amazon.com.docsamples { class UploadDirectoryMPUHighLevelAPI { static string existingBucketName = "*** Provide bucket name ***"; static string directoryPath = "*** Provide directory name ***"; static void Main(string[] args) { try { TransferUtility directoryTransferUtility = new TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USEast1)); // 1. Upload a directory. directoryTransferUtility.UploadDirectory(directoryPath, existingBucketName); Console.WriteLine("Upload statement 1 completed"); // 2. Upload only the .txt files from a directory. // Also, search recursively. directoryTransferUtility.UploadDirectory( directoryPath, existingBucketName, "*.txt", SearchOption.AllDirectories); Console.WriteLine("Upload statement 2 completed"); // 3. Same as 2 and some optional configuration // Search recursively for .txt files to upload). TransferUtilityUploadDirectoryRequest request = new TransferUtilityUploadDirectoryRequest { BucketName = existingBucketName, Directory = directoryPath, SearchOption = SearchOption.AllDirectories, SearchPattern = "*.txt" }; directoryTransferUtility.UploadDirectory(request); Console.WriteLine("Upload statement 3 completed"); } catch (AmazonS3Exception e) { Console.WriteLine(e.Message, e.InnerException); } } } }