4

我试图让用户通过左键单击链接来下载 S3 文件。通常,他们必须通过右键单击并另存为来完成。

我查看了http://apidock.com/rails/ActionController/DataStreaming/send_file但不确定这是否是我想要的。

这篇文章http://www.jtricks.com/bits/content_disposition.html基本上展示了如何通过配置 Apache 来完成。但是,我们使用的是 Heroku。

之前有人使用过 Content-Disposition 从 S3 提供文件吗?还想知道这是否占用了整个 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 回答
0

尝试 send_data AWS::S3.new.buckets['music'].objects["path/to/your/file.mp3"].read, filename: "some_file_name.mp3"

于 2014-07-28T19:27:00.700 回答