2011-12-21 4 views
5

AWS.Net을 사용하여 사용자 컨텐츠 (이미지)를 업로드하고 내 사이트에 표시합니다. 이것은 내 코드가 업로드 현재 모습입니다 :S3 스토리지를 .NET과 함께 사용

using (client = Amazon.AWSClientFactory.CreateAmazonS3Client()) 
    { 
     var putObjectRequest = new PutObjectRequest 
     { 

      BucketName = bucketName, 
      InputStream = fileStream, 
      Key = fileName, 
      CannedACL = S3CannedACL.PublicRead, 
      //MD5Digest = md5Base64, 
      //GenerateMD5Digest = true, 
      Timeout = 3600000 //1 Hour 
     }; 

     S3Response response = client.PutObject(putObjectRequest); 
     response.Dispose(); 
} 

뭐죠 이러한 파일의 경로를 저장하는 가장 좋은 방법? 응답에서 내 파일에 대한 링크를 얻을 수있는 방법이 있습니까?

현재과 같은 웹 구성에 URL이 있습니다. 이미지를 표시해야 할 때 해당 문자열을 가져 와서 업로드 한 파일을 나타내는 db에 저장 한 객체의 키를 사용하십시오. 더 좋은 방법이 있나요?

모든 예제는 실제로 이런 종류의 사용법을 다루지 않습니다. 그리고 설명서는 온라인이 아니며 아마존의 지시 사항을 따르기는하지만 SDK를 설치 한 후 문서를 얻는 방법을 모르겠습니다.

+0

코드 샘플의 경우 +1! S3/SDK는 버킷 기본값과 상관없이 업로드시 개인 파일로 기본 설정됩니다. 전송 유틸리티에서 사용 된 권한을 명시 적으로 설정 한 다른 모든 예제가 있습니다. 입력 스트림은 내가 한 것입니다! – winwaed

답변

2

당신의 버킷 이름을 포함한 경로를 web.config에 저장하는 방법은 내가하는 것과 똑같습니다. 그런 다음 상대 경로를 다양한 데이터베이스 테이블에 저장합니다.

좋은 접근 방식은 CloudFront와 같은 다른 저장소 메커니즘이나 CDN으로 쉽게 마이그레이션 할 수 있다는 것입니다. S3 파일은 CNAME 매핑을 수행하는 경우 다른 도메인이나 하위 도메인에 있기 때문에 .NET 런타임이 동일한 도메인이나 하위 도메인에서 실행되지 않기 때문에이 방법보다 더 좋은 방법이라고 생각하지 않습니다.

0

또한 응답에 "S3Object"가있는 uri를 직접 가리키는 "Location"속성이 있습니다.

관련 문제