ASP.NET MVC 에서 AWS 의 S3 에 파일을 다운로드 처리고자 할때, S3 는 URL 을 전달해 주기 때문에 이를 BYTE 나 Stream 으로 변환하여 변환받아 controller 에서 처리 할 수 있는데요. 간단하게 Copyto 함수로 복사하는 방법이 존재하며, 복사한 stream 에 postion 을 0 으로 갱신하는 부분이 제일 중요 합니다. 읽기 전용이기 때문에 copyto 할때 파일을 읽어 position 을 마지막 위치에 존재하므로 새로운 stream 객체에는 다시 읽을 수 있도록 0 부터 지정하는 것입니다.
public Stream DownloadS3Object(string awsBucketName, string keyName)
{
using (var client = Amazon.AWSClientFactory.CreateAmazonS3Client())
{
Stream imageStream = new MemoryStream();
GetObjectRequest request = new GetObjectRequest { BucketName = awsBucketName, Key = keyName };
using (GetObjectResponse response = client.GetObject(request))
{
response.ResponseStream.CopyTo(imageStream);
}
imageStream.Position = 0;
// Clean up temporary file.
// System.IO.File.Delete(dest);
return imageStream;
}
}
펌 : http://stackoverflow.com/a/20284702