재우니의 블로그


asp.net mvc 에서 AWS S3 의 파일을 byte 로 받아 처리하는 방법입니다.


출처는 http://stackoverflow.com/a/34159070/2888677 입니다.


GetObjectResponse response = client.GetObject(request);
using (Stream responseStream = response.ResponseStream)
{
    var bytes = ReadStream(responseStream);
    var download = new FileContentResult(bytes, "application/pdf");
    download.FileDownloadName = filename;
    return download;
}
public static byte[] ReadStream(Stream responseStream)
{
    byte[] buffer = new byte[16 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}


위의 코드를 기반으로 asp.net mvc 의 파일 다운로드 구문은 아래와 같이 구현하면 좋습니다.


public FileResult About()
        {
            ViewBag.Message = "Your application description page.";

            byte[] fileBytes = bytes; //aws s3 파일 byte 변환값
            return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, "홍길동.png");
        }