首页 > 解决方案 > 乘客/Apache 使用 send_file 下载空文件

问题描述

我在这里看到过类似的问题,但目前没有一个能解决我的问题。有一个使用 send_file 下载简单 PDF 的 Ruby 应用程序,但是当 PDF 被“下载”时,它具有正确的文件名,但为 0 字节。我在 Apache 配置中打开了调试日志记录,并且没有相关错误。该应用程序在乘客上运行。

目前,我在 vhost 配置中有:

  XSendFile On
  XSendFilePath /var/www/

(正在从 /var/www 的子文件夹下载文件)。应用程序本身通过 capastrano 部署,并从发布文件夹链接到“当前”。所以它是 /var/www/$user/current/$filedir

在 production.rb 中,它不适用于已注释或未注释的“config.action_dispatch.x_sendfile_header”。

Ruby 代码只是运行:

send_file fn

其中 fn 是文件位置的完整路径。它用于指定 MIME 类型,但由于它无论如何都不起作用,因此被注释掉了。

标签: rubyapachepassenger

解决方案


推荐阅读