2011-01-27 2 views
6

내 응용 프로그램은 레일즈 2 백엔드, 호스팅을위한 헤로크, 파일 업로드를위한 클립, 파일 저장을위한 Amazon S3를 사용합니다.클릭하면 파일 다운로드 - Ruby on Rails

지금 사용자는 paperclip + s3으로 파일을 업로드 할 수 있습니다. 이는 완벽하게 작동합니다. 업로드가 끝나면 파일 위치 (s3 버킷)에 링크 된 아이콘이 대시 보드에 나타납니다. 아이콘을 클릭하면 브라우저가 새 창에서 파일을 엽니 다 (대부분의 파일 유형 - PDF, MP3, img 등). 여는 대신 사용자가 Gmail 첨부 파일과 같은 파일의 아이콘을 클릭하면 파일이 자동으로 다운로드되기를 원합니다. 이 솔루션은 모든 파일 형식과 크로스 브라우저에서 작동 할 수 있어야합니다.

레일에서 이것을 수행하는 도우미가 있습니까? 아니면 자바 스크립트가 필요합니까? 나는이 책에 정말 붙어있어서 올바른 방향으로 나를 가리키게 할 것이 무엇이든 매우 감사 할 것입니다. 감사!

답변

10

다음을 시도하십시오이 새로 업로드 된 파일의 "첨부 파일"값

이미 업로드 한 파일을 수동으로 수정해야합니다. Cyberduck 또는 다른 FTP 클라이언트.

+1

팁 주셔서 감사합니다! 그냥 참고하시기 바랍니다. 여기에 타입이 있다고 생각합니다. '{ "Content-Disposition": "attachment"}'는 오류를 던졌지 만'{ "Content-Disposition"=> "attachment"}'제대로 작동했습니다. – aguynamedloren

+0

'{ "Content-Disposition": "attachment"}'는 Ruby 1.9 전용입니다. 여전히 1.8에 있다면'{ "Content-Disposition"=> "attachment"}'를 사용하십시오. – x1a4

2

파일을 전송할 때 값으로 Content-Disposition 헤더를 설정해야합니다. S3에서 직접 전송 한 경우 Content-Disposition 헤더를 설정하도록 S3에 알려야합니다. 아마도 Content-Type 일 수도 있습니다.

Content-Disposition 헤더를 연결하도록 S3에게 알리는 경우 은 항상이 헤더를 전송합니다.

FWIW, 여기에 개체에 대한 PUT을하고 아마존의 문서입니다 :

class Test < ActiveRecord::Base 

    has_attached_file :testfile, 
    :storage => :s3, 
    # All your S3 config 
    :s3_headers => {"Content-Disposition" => "attachment"} 

end 

이에 "내용 - 처리"헤더를 설정하는 종이 클립 보석을 말해야한다 : http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html