gpt4 book ai didi

ruby-on-rails - Rails 3,apache & 乘客,send_file 发送零字节文件

转载 作者:行者123 更新时间:2023-12-03 23:50:02 25 4
gpt4 key购买 nike

我正在努力解决 send_file使用 rails 3.0.9 运行 ruby​​ 1.9,乘客 3.0.8 在 ubuntu lucid 上运行 apache
xsendfile 模块已安装并加载到 apache

root~# a2enmod xsendfile
Module xsendfile already enabled

它在启用 mods 时正确符号链接(symbolic link)
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 指令的原因。通过注释掉 config 指令可以得到相同的结果。

另一个缺点(除了将 rails 进程占用太长时间之外)是当数据流由 rails 进程处理时,响应似乎不会发送内容长度 header 。所以用户不知道他们正在下载的文件有多大,也不知道需要多长时间(可用性问题)。

我能够通过确保 mod_sendfile 正确包含并加载到我的 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 /

关于ruby-on-rails - Rails 3,apache & 乘客,send_file 发送零字节文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com