我有一个(希望很小)的问题。
我正在使用 Ruby on Rails 和 Paperclip 来处理文件上传。现在我想自动将 Content-Disposition 标头设置为“附件”,以便当用户单击链接时,文件被下载而不是直接显示在浏览器中。
我为 Amazon S3 找到了以下解决方案: 点击下载文件 - Ruby on Rails
但我不使用S3。有人可以帮忙吗?
提前致谢,/Lasse
我有一个(希望很小)的问题。
我正在使用 Ruby on Rails 和 Paperclip 来处理文件上传。现在我想自动将 Content-Disposition 标头设置为“附件”,以便当用户单击链接时,文件被下载而不是直接显示在浏览器中。
我为 Amazon S3 找到了以下解决方案: 点击下载文件 - Ruby on Rails
但我不使用S3。有人可以帮忙吗?
提前致谢,/Lasse
如果您使用文件存储,Paperclip 将文件存储在文件RAILS_ROOT/public/system
夹中(使用该选项进行配置)。:path
文件/public
夹中的文件直接作为静态文件提供。“Rails/Rack 永远不会看到对您的公用文件夹的请求”(引用 cwninja的话)。
文件/public
夹中的文件由运行此应用程序的网络服务器提供服务(例如开发中的 Apache 或 WEBrick)。网络服务器负责在提供文件时设置标头。所以你应该配置网络服务器来为你的附件设置正确的标题。
另一种选择是构建一个控制器或一些 Rack 中间件来为您的回形针附件提供服务。在那里你可以做类似的事情response.headers['Content-Disposition'] = 'attachment'
。
第三个选项是使用 S3,然后您可以Content-Disposition
在 S3 对象中存储标头(如 )。然后,S3 使用这些标题提供回形针附件。
根据此链接,您可以执行以下操作:
<Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files>
<Files *.eps> ForceType application/octet-stream Header set Content-Disposition attachment </Files>