4

ユーザーがリンクを左クリックして S3 ファイルをダウンロードできるようにしようとしています。通常は、右クリックして名前を付けて保存する必要があります。

http://apidock.com/rails/ActionController/DataStreaming/send_fileを調べましたが、これが必要かどうかはわかりません。

この記事http://www.jtricks.com/bits/content_disposition.htmlは基本的に、Apache を構成することによってどのようにそれを行うことができるかを示しています。ただし、Heroku を使用しています。

S3 からファイルを提供するために以前に Content-Disposition を使用した人はいますか? また、これが Web プロセス全体 (Dyno) を占有するかどうか疑問に思っていますか? または、代わりに S3 サーバーでプロセス全体が発生する場合は?

私は試した:

send_file 'http://some_bucket_name.s3.amazonaws.com/uploads/users/28/songs/88/test.mp3', :type => 'audio/mp3', :disposition => 'attachment'

そして私は得る:

Cannot read file http://some_bucket_name.s3.amazonaws.com/uploads/users/28/songs/88/test.mp3

ファイルは存在します。手動で URL に移動した場合。ファイルは正常に再生されます。

4

2 に答える 2

3

これは Rails 3 で機能します。コントローラーで次のようにします。

response.headers['Content-Disposition'] = "attachment; filename=#{original_filename}"
self.response_body = proc { |response, output|
  AWS::S3::S3Object.stream(path, 'some_bucket_name') { |segment|
    output.write segment
  }
}

あなたの場合:

original_filename = 'test.mp3'
path = '/uploads/users/28/songs/88/test.mp3'
于 2011-11-28T20:23:34.110 に答える