我正在努力与send_file与rails 3.0.9运行
ruby 1.9,乘客3.0.8在apache上ubuntu清
xsendfile模块已安装并加载到apache中
xsendfile模块已安装并加载到apache中
root~# a2enmod xsendfile Module xsendfile already enabled
它已启用mods正确符号
lrwxrwxrwx 1 root root 32 Aug 8 11:20 xsendfile.load -> ../mods-available/xsendfile.load
config.action_dispatch.x_sendfile_header =“X-Sendfile”在我的production.rb中设置
使用send_file结果将零字节文件发送到浏览器
filepath = Rails.root.join('export',"#{filename}.csv") if File.exists?(filepath) send_file filepath,:type => 'text/csv' end
解决方法
我相信以前的答案不是正确的方法,因为据我所知,当应用这个解决方案时,Apache并没有处理下载,而是使用rails进程.这就是为什么Nginx指令看起来不行.您可以通过注释掉配置指令来获得相同的结果.
另一个缺点(除了绑定一个rails进程太久),当数据流由rails进程处理时,响应似乎没有发送内容长度头.所以用户不知道他们下载的文件有多大,也不知道需要多长时间(可用性问题).
我可以通过确保mod_sendfile正确地包含在我的apache配置中并加载到我的apache配置中,这样就可以得到它(这将取决于你的apache安装等等):
LoadModule xsendfile_module /usr/lib64/httpd/modules/mod_xsendfile.so ... # enable mod_x_sendfile for offloading zip file downloads from rails XSendFile on XSendFilePath /
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。