Rails 3 send_file - 0个字节

时间:2011-02-22 16:28:47

标签: ruby-on-rails ruby

我有以下导轨代码

send_file '/test.pdf'

该文件似乎是以0字节下载,有没有人对如何解决这个问题有任何想法?

感谢

1 个答案:

答案 0 :(得分:5)

我相信send_file取决于您的Web服务器的支持。您是否使用内置服务器中的rails运行应用程序?如果是这样,我想你会看到你在这里的行为。

基本上,send_file背后的想法是它设置一个HTTP标题'X-Sendfile'指向你想要发送的文件。 Web服务器看到此标头而不是返回响应的主体,而是发送指定的文件。

这种方法的好处是,您的普通Web服务器经过高度优化,可以非常快速地发送静态文件的内容,并且通常可以比rails本身快许多次完成工作。

因此,您的问题的解决方案是:  *使用支持X-Sendfile的网络服务器(例如Apache),或  *正如rubyprince评论的那样,使用send_data代替,这将使ruby做繁重的工作。

除此之外,您应该能够通过使用Firebug或Safari / Chrome的开发人员工具查看响应标头来确认这是发生了什么。