【问题标题】:Setting Content-Disposition to attachment using Ruby on Rails and Paperclip使用 Ruby on Rails 和 Paperclip 将 Content-Disposition 设置为附件
【发布时间】:2012-08-03 04:17:20
【问题描述】:

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

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

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

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

提前致谢, /拉斯

【问题讨论】:

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


    【解决方案1】:

    根据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>
    

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-22
        • 2019-12-29
        • 1970-01-01
        • 2013-09-03
        • 2014-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多