使用Ruby on Rails和Paperclip将Content-Disposition设置为附件

时间:2012-08-06 07:29:24

标签: ruby-on-rails ruby-on-rails-3 paperclip

我有一个 - 希望很小的问题。

我使用Ruby on Rails和Paperclip来处理文件上传。 现在我想自动将Content-Disposition标头设置为“attachment”,这样当用户点击链接时,文件就会被下载而不是直接显示在浏览器中。

我找到了适用于Amazon S3的以下解决方案: Download file on click - Ruby on Rails

但我不使用S3。 有人可以帮忙吗?

提前致谢, /拉塞

2 个答案:

答案 0 :(得分:0)

如果您使用文件存储,Paperclip会使用RAILS_ROOT/public/system选项将文件存储在:path文件夹(configurable)中。

/public文件夹中的文件直接作为静态文件提供。 “Rails / Rack永远不会看到对您的公用文件夹的请求”(到quote cwninja)。

/public文件夹中的文件由运行此应用程序的Web服务器提供服务(例如开发中的Apache或WEBrick)。并且Web服务器负责在提供文件时设置标头。因此,您应该配置网络服务器,为您的附件设置正确的标题。

另一个选择是构建一个控制器或一些Rack中间件来为您的回形针附件提供服务。在那里你可以做response.headers['Content-Disposition'] = 'attachment'

之类的事情

第三个选项是使用S3,然后您可以在S3对象中存储标题(如Content-Disposition)。 S3然后使用这些标题提供回形针附件。

答案 1 :(得分:0)

根据this link,您可以执行以下操作:

<Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files> 
<Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment </Files>