【发布时间】:2011-04-13 02:19:18
【问题描述】:
我无法让 send_file(Model.attachment.path) 工作。 它不会失败,而是向客户端发送一个 0 字节大小的文件,但文件名是正确的。
这个问题是在我从 Rails 2.3.8 大迁移到 3 之后开始出现的。
在这次迁移中还发生了很多其他事情,我会尽力详细说明所有这些事情。
- 分发更改/服务器更改。 Rackspace RHEL5 到 Linode Ubuntu 10.04LTS
- Ruby 版本更改,1.8.6 -> 1.9.2
- Rails 版本更改,2.3.8 -> 3.0.0
- httpd 平台更改,apache2 -> nginx(但是我也尝试过 apache2,但没有成功)。
我通过 ftp 移动了附件,因为它们不是我的 git 存储库的一部分,因此它们是通过 cap deploy 发布的,而不是手动 ftp 远程(RHEL5)到本地(Win7)然后本地(Win7)到远程(Ubuntu10)。
我知道 FTP 不会通过传输保留文件权限,所以我还模仿了我以前服务器上看到的 chmod,因此它们几乎相同。 (用户/组不同,设置为 root:root 而不是 olduser:olduser)。
从我的生产日志中下载附件的请求的 sn-p。
Started GET "/attachments/replies/1410?1277105698" for 218.102.140.205 at 2010-09-16 09:44:31 +0000
Processing by AttachmentsController#replies as HTML
Parameters: {"1277105698"=>nil, "id"=>"1410"}
Sent file /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc (0.2ms)
Completed 200 OK in 78ms
一切都好。让我也排除本地问题,我尝试在 Win7 和 Ubuntu(在 Vbox 上)上通过 Chrome 下载。
让我也向你保证,这条路确实是正确的。
root@li162-41:/srv/app/current# tail /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc
#
#
%17nw
HQ��+1ae����
%33333333333(��QR���HX�"%%��@9
��@�p4��#P@��Unknown������������G��z �Times New Roman5��Symbol3&�
�z �Arial5&�
所以总结一下这个问题,我如何让 send_file 真正发送文件而不是假的 0 字节垃圾。
【问题讨论】:
标签: ruby-on-rails linux nginx