我试图让用户通过点击一个链接来下载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。
这适用于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'
尝试send_data AWS: S3.new.buckets['音乐'].objects["路径//你/file.mp3")。读取,文件名:"some_file_name.mp3"