2011-01-27 19 views
6

私のアプリケーションは、Rails 2バックエンド、Heroku for hosting、Paperclip for file uploads、Amazon S3 for file storageを使用しています。Click on file - Ruby on Rails

今すぐユーザーはpaperclip + s3でファイルをアップロードできます。これは完璧に機能します。アップロード後、ダッシュボードにファイルの場所(s3バケット)にリンクされたアイコンが表示されます。アイコンをクリックすると、ブラウザは新しいウィンドウでファイルを開きます(ほとんどのファイルタイプ - PDF、MP3、imgなど)。開くのではなく、ユーザーがファイルのアイコン(Gmailの添付ファイルなど)をクリックしたときにファイルを自動的にダウンロードするようにします。このソリューションは、あらゆるファイルタイプとクロスブラウザで動作するはずです。

これを行うにはヘルパーが必要ですか、またはJavaScriptが必要ですか?私は本当にこの1つに固執しているので、正しい方向に私を向ける何かが大いに感謝されるだろう。ありがとう!

答えて

10

次のことを試してください:

class Test < ActiveRecord::Base 

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

end 

これはに「content-disposition」ヘッダーを設定するには、ペーパークリップの宝石を教えてください新しくアップロードされたファイルの値 "attachment"。

すでにアップロードされているファイルを手動で編集する必要があります。 Cyber​​duckまたは別の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を行う上で、Amazonのドキュメントがあります:http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html