点击下载文件 – Ruby on Rails

我的应用程序使用Rails 2后端,Heroku用于托管,Paperclip用于文件上传,Amazon S3用于文件存储。

现在用户可以使用paperclip + s3上传文件 – 这完美无瑕。 上传后,其仪表板上会出现一个图标,链接到文件位置(在s3存储桶中)。 单击该图标时,浏览器将在新窗口中打开该文件(对于大多数文件类型 – PDF,MP3,img等)。 我想要在用户点击文件图标(如Gmail附件)时自动下载文件,而不是打开。 该解决方案应该能够适用于任何文件类型和跨浏览器。

有没有帮助在rails中执行此操作,还是需要javascript? 我真的被困在这个上,所以任何指向正确方向的东西都会非常感激。 谢谢!

请尝试以下方法:

class Test < ActiveRecord::Base has_attached_file :testfile, :storage => :s3, # All your S3 config :s3_headers => {"Content-Disposition" => "attachment"} end 

这应该告诉Paperclip Gem将“Content-Disposition”标题设置为新上传文件的值“attachment”。

请注意,您必须手动编辑已上载的文件,例如使用Cyber​​duck或其他FTP客户端。

传输文件时,需要设置一个Content-Disposition标头,其值为attachment; filename=yourfilename.pdf attachment; filename=yourfilename.pdf 。 如果它直接从S3传输,您还需要告诉S3设置Content-Disposition标头。 也可能是Content-Type

请注意,如果您告诉S3关联Content-Disposition标头,它将始终传输此标头。

FWIW,这是亚马逊关于为对象做PUT的文档: http : //docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html