S3 버켓/개체에서 파일을 읽는 동안 사용자에게 파일 내용을 스트리밍해야합니다.
이 같은 AWS::S3 라이브러리 무언가가 작동하지 않을 수 있습니다 사용하는 경우 :이 코드는 대부분 양식을 로컬 파일 또는 파일 - 류의 객체
N.B. 작동 자체로 send_file 코드를 복사
send_file_headers!(:length=>S3Object.about(<s3 object>, <s3 bucket>)["content-length"], :filename=><the filename>)
render :status => 200, :text => Proc.new { |response, output|
S3Object.stream(<s3 object>, <s3 bucket>) do |chunk|
output.write chunk
end
}
필자는 필연적으로 레일 프로세스 자체에서 파일을 제공하는 것에 대해 조언 할 것입니다. 가능하다면 허용되는 경우 GET 인증을 사용하여 버킷의 개인 데이터를 제공합니다.
인증 된 GET을 사용하면 버킷과 그 개체를 비공개로 유지하면서 인증 서명 토큰이 포함 된 URL을 만들어 특정 개체 콘텐츠를 읽을 수있는 임시 권한을 허용 할 수 있습니다. 사용자는 단순히 인증 된 URL로 리디렉션되며 토큰은 몇 분 동안 유효하게 만들 수 있습니다. 사용 후, 당신은 비공개 디렉토리에 로컬 S3에서 파일을 읽고 쓸 수
time_of_exipry = Time.now + 2.minutes
S3Object.url_for(<s3 object>, <s3 bucket>,
:expires => time_of_exipry)
가능한 복제본 [브라우저에서 파일을 다운로드하려면 \ _ 데이터를 보내려면 어떻게합니까?] (http://stackoverflow.com/questions/7337508/how-to-force-send-data-to-download- the-file-in-the-browser) –