2013-02-07 5 views
0

내 웹 사이트를 통해 내 사용자가 aws에서 오디오 콘텐츠를 다운로드하는 아주 쉬운 방법을 구축하려고합니다. 여기에 흐름이 있습니다 :aws s3에서 rails 컨트롤러 다운로드

  1. 나는 사용자에게 다운로드 링크를 제공합니다. 예 : www.mysite.com/foobar
  2. 사용자가 링크를 클릭합니다. 내 레일 컨트롤러에서
  3. , 나는 만료되는 AWS S3 URL을 생성하고 자동으로 해당 URL의 오디오 콘텐츠를 다운로드 시작합니다.
  4. 사용자가 브라우저에 파일을 저장할지 여부를 묻는 메시지가 나타납니다. 사용자가 파일을 저장하도록 허용하는 경우 사용자가 파일을 실제로 다운로드했음을 기록하기 위해 내 레일 앱에 대한 콜백을 원합니다.

사용자의 관점에서 볼 때, 내가 결정한 URL로 이동하고 메시지가 표시되면 파일을 다운로드하도록 허용하는 간단한 프로세스가 필요합니다. 배경에서

, 나는 사용자로부터 숨겨진 AWS S3 URL을 유지하려면 나는 사용자가 다운로드를 수락 한 후 콜백 로직을 작성 할 수있는 유연성을 갖고 싶어.

이 작업을 수행하는 데 권장되는 방법은 무엇입니까?

답변

0

이 문제를 해결하는 가장 좋은 방법은 매우 짧은 (십분?) 수명과 S3의 URL을 생성하고 S3 URL로 리디렉션을 반환하는 것입니다. S3 URL은 사용자에게 노출되지만 취약점은 아닙니다. 당신이 S3의 URL을 숨기려면

, 당신은 프록시 비싸고 오랜 시간 동안 작업자 프로세스를 소모하여 서버를 통해 다운로드가 필요합니다. 이 방법은 권장하지 않지만 S3 리소스를 숨길 수있는 유일한 방법입니다.

Content-Disposition: attachment; filename="fname.ext" 
: 뷰 대 다운로드를 트리거하는 것이 중요한 경우

는 또한, 당신은 첨부 파일 다운로드를 트리거 할 내용 - 처리 헤더를 설정해야

관련 문제