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

.NET용 AWS SDK를 사용하여 객체 가져오기

다음 작업은 .NET 클래스를 사용하여 객체 또는 객체의 부분을 검색하고 로컬 파일로 저장하는 과정을 보여줍니다.

객체 다운로드

1

AmazonS3 클래스의 인스턴스를 만듭니다.

2

AmazonS3.GetObject 메서드 중 하나를 실행합니다. 버킷 이름, 파일 경로, 스트림 등의 정보를 제공해야 합니다. GetObjectRequest 클래스의 인스턴스를 만들어 이 정보를 제공합니다.

3

GetObjectResponse.WriteResponseStreamToFile 메서드 중 하나를 실행하여 스트림을 파일로 저장합니다.

다음은 위에서 설명한 작업을 실행하는 C# 코드 예제입니다. 이 예제는 바탕화면의 파일로 객체를 저장합니다.

Copy
static IAmazonS3 client; using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = client.GetObject(request)) { string dest = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), keyName); if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } } }

전체 객체를 읽는 대신, 다음 C# 코드 예제에서와 같이 요청에 바이트 범위를 지정하여 객체 데이터의 일부만 읽을 수 있습니다.

Copy
GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName, ByteRange = new ByteRange(0, 10) };

객체를 검색할 때 필요할 경우 ResponseHeaderOverrides 객체를 사용하여 다음 C# 코드 예제와 같이 해당 요청 속성을 설정하여 응답 헤더 값을 무시할 수 있습니다(객체 가져오기 참조). 이 기능을 사용하여 객체 키 이름과 다른 파일 이름으로 다운로드해야 할 객체를 지정할 수 있습니다.

Copy
GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; ResponseHeaderOverrides responseHeaders = new ResponseHeaderOverrides(); responseHeaders.CacheControl = "No-cache"; responseHeaders.ContentDisposition = "attachment; filename=testing.txt"; request.ResponseHeaderOverrides = responseHeaders;

다음 C# 코드 예제는 Amazon S3 버킷에서 객체를 검색합니다. 이 예제는 GetObjectResponse.ResponseStream 속성을 사용하여 응답으로 전송된 객체 데이터를 읽습니다. 이 예제는 또한 GetObjectResponse.Metadata 모음을 사용하여 객체 메타데이터를 읽는 방법을 보여줍니다. 검색한 객체에 x-amz-meta-title 메타데이터가 있을 경우 코드는 메타데이터 값을 인쇄합니다.

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Amazon S3 .NET 코드 예시 실행를 참조하십시오.

Copy
using System; using System.IO; using Amazon.S3; using Amazon.S3.Model; namespace s3.amazon.com.docsamples { class GetObject { static string bucketName = "*** bucket name ***"; static string keyName = "*** object key ***"; static IAmazonS3 client; public static void Main(string[] args) { try { Console.WriteLine("Retrieving (GET) an object"); string data = ReadObjectData(); } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } static string ReadObjectData() { string responseBody = ""; using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1)) { GetObjectRequest request = new GetObjectRequest { BucketName = bucketName, Key = keyName }; using (GetObjectResponse response = client.GetObject(request)) using (Stream responseStream = response.ResponseStream) using (StreamReader reader = new StreamReader(responseStream)) { string title = response.Metadata["x-amz-meta-title"]; Console.WriteLine("The object's title is {0}", title); responseBody = reader.ReadToEnd(); } } return responseBody; } } }