2017-02-09 1 views
1

AWS S3 버킷에서 가져온 객체의 일종의 스트림 (메모리 스트림 일 가능성이 있음)을 반환 할 가능성이 있는지 알아 내려고하고 있습니다.AWS S3에서 스트림으로 객체 가져 오기

S3 버킷에는 다양한 유형의 이미지, 문서 등이 포함되어 있습니다. 모두 내 웹 사이트에서 사용해야합니다. 그러나 AWS S3 버킷의 경로를 표시하고 싶지 않습니다.
그 이유는 전체 경로가 아닌 스트림을 만들어 이미지와 다운로드 가능한 문서를 신속하게 표시하려고하는 이유입니다. 이게 말이 돼? :-)

C# /. NET AWS SDK를 사용하고 있습니다.

앞으로 어떤 아이디어와 방향을 알기를 기대합니다!

public FileStream GetFile(string keyName) 
{ 
    using (client = new AmazonS3Client(Amazon.RegionEndpoint.USEast2)) 
    { 
     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)) 
     { 
      // The following outputs the content of my text file: 
      Console.WriteLine(reader.ReadToEnd()); 
      // Do some magic to return content as a stream 
     } 
    } 
} 
+1

버킷의 경로를 숨기려면 http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html이 작동합니다. – moondaisy

답변

1

.NET 4, 당신은 MemoryStream을에 ResponseStream의 내용을 (즉, Amazon.Runtime.Internal.Util.MD5Stream입니다) 복사 Stream.CopyTo를 사용할 수 있습니다. client.GetObject(Bucket, objectName) 작성중인 요청 GetObject를 호출 대안입니다

GetObjectResponse getObjRespone = client.GetObject(Bucket, objectName); 
MemoryStream stream = new MemoryStream(); 
getObjRespone.ResponseStream.CopyTo(stream); 
return stream; 

.