Ruby on Rails - send_file

时间:2011-05-27 13:03:57

标签: ruby-on-rails ruby

我使用send_file方法下载文件。它在我的本地机器上工作正常。但是它不能在服务器上运行 - 它会返回一个空白文件。

代码:

send_file Rails.root.join('public', 'uploads') + (uploaded_file.original_filename + ".filtered")

请帮忙。

2 个答案:

答案 0 :(得分:4)

根据您使用的网络服务器,您可能需要更改config/environments/production.rb中的发送文件设置。

例如,对于nginx,您需要取消注释掉这一行:

config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'

答案 1 :(得分:1)

尝试:

send_file Rails.public_path.join('uploads', "#{uploaded_file.original_filename}.filtered")

另请注意,如果您在public目录中有文件,则可以直接提供这些文件,因此您可以重定向到项目的生成URL(尽管这可能不是非常简单)。


编辑:

由于非标准'.filtered'文件扩展名,您可能需要执行以下操作:

send_file Rails.public_path.join('uploads', "#{uploaded_file.original_filename}.filtered"), :type => 'application/xml', :disposition => 'attachment'

更改:type值以匹配正在投放的文件的内容类型。