我使用send_file
方法下载文件。它在我的本地机器上工作正常。但是它不能在服务器上运行 - 它会返回一个空白文件。
代码:
send_file Rails.root.join('public', 'uploads') + (uploaded_file.original_filename + ".filtered")
请帮忙。
答案 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
值以匹配正在投放的文件的内容类型。