相关疑难解决方法(0)

Rails使用send_file发送0字节文件

我无法使send_file(Model.attachment.path)工作.它不会失败,相反,它会向客户端发送一个0字节大小的文件,但文件名是正确的.

在我从Rails 2.3.8迁移到3之后,这个问题开始发生了.

此次迁移中还发生了很多其他事情,我会尽力详细说明所有这些事情.

  1. Distrubution更改/服务器更改.Rackspace RHEL5到Linode Ubuntu 10.04LTS
  2. Ruby版本更改,1.8.6 - > 1.9.2
  3. Rails版本更改,2.3.8 - > 3.0.0
  4. httpd平台更改,apache2 - > nginx(不过我试过apache2也没用).

我通过ftp移动附件,因为它们不是我的git存储库的一部分,因此它们通过cap deploy发布,而不是手动ftp远程(RHEL5)到本地(Win7)然后本地(Win7)到远程(Ubuntu10).

我知道FTPing不会通过传输保留文件权限,所以我所做的就是模仿我之前服务器上看到的chmod,因此它们几乎相同.(用户/组不同,设置为root:root而不是olduser:olduser).

从生产日志下载附件的请求的片段.

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
Run Code Online (Sandbox Code Playgroud)

一切都还好.我还要排除本地问题,我尝试在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&?
Run Code Online (Sandbox Code Playgroud)

总结一下这个问题,如何让send_file实际发送文件而不是假的0字节垃圾.

linux ruby-on-rails nginx

23
推荐指数
3
解决办法
1万
查看次数

标签 统计

linux ×1

nginx ×1

ruby-on-rails ×1