2

Amazon S3を使用して、ユーザーアカウントのユーザーコンテンツを格納して提供しています。私は、インライン(時には画像がブログの投稿などにあるURL)またはダウンロードとしてファイルを提供する能力が必要です。デフォルトではS3バケットにファイルをアップロードするとき、ファイルにはContent-Dispositionが設定されていません(ブラウザがファイルMIMEを認識する限りサーバーインラインになるので問題ありません)。しかし、ファイルをダウンロードするための添付ファイルの処理。Railsを使用したAWS S3のコンテンツ処理を設定しますか?

Rails/S3 gemを使用すると、そのリクエストだけContent-Dispositionを添付ファイル(またはその逆)に設定してファイルを送信するようにAmazonに要求することは可能ですか?おそらく、それはトークンのいくつかの並べ替えを使用することができます(通常、認証された読み込みに使用されるリクエストのトークンを参照してください...それがこの状況でも私を助けることができるかどうか疑問に思っています)? S3宝石を使用して、私は各ファイルのContent-Dispositionを設定して保存する方法を知っていますが、ファイルが常にダウンロードされ、イメージとしてインライン(テストされていない)として使用できませんでした。

2つのファイル(Content-Disposition = 'ダウンロード'が設定されていてもいなくてもかまいません)がありますか?前もって感謝します。

PSレール2、attachment_fu、aws-s3 gemを使用しています(上記のアプリは、既に実行されているアプリケーションのサイズが大きく、aws-s3との間に矛盾があるため変更できません)とaws_right gem)

答えて

2

AmazonのAPIでは、S3に格納されているファイルのContent-Dispositionを変更できるようになりました。 Read the announcement here.

+1

署名付きURLを使用する場合は、一時的に機能するアップロードされたファイルとは異なる種類のコンテンツの処理を持つURLを作成できます。 – jakeonrails

1

アップロード時にContent-Dispositionが設定されていると思います。そのため、それぞれ独自のContent-Dispositionを持つファイルのコピーを2つ作成したくない場合は、コントローラからストリームを送信する方法がありますsend_file http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file

+1

S3を使用すると、アップロード時にContent-Dispotionが設定されます。 send_fileメソッドなどの他のメソッドを使用すると、送信時にContent-Dispitionを設定できます。しかし、send_fileはあなたのファイルシステムからファイルを送信しているときにのみ動作するので、それをS3と共に使用することはできません。私は、ファイルのContent-Dispotionを設定することはできますが、引き続きインライン要素として送信することができました。たとえば、イメージのContent-Dispositionが「attachment」に設定されている場合、イメージタグのsrcとして使用することができ、イメージURLをブラウザに置くとダウンロードできます。 –

+0

ああ、知っておきたいことです。画像のインライン "src"として動作する場合、それらをすべて "添付ファイル"としてアップロードするのが最善のように思えます。 – jemminger

関連する問題