在Ruby on Rails中恢复文件下载

时间:2010-05-19 06:29:24

标签: ruby-on-rails file download resume-download

终于找到了如何实现这个目标!

原来它就像启用xsendfile和设置头参数Accept-Range

一样简单

请阅读下面的答案

(顺便说一句,在下面的块引用中我写了一个常见的陷阱新手 - 就像我做的那样。我们倾向于认为应该手动编程)

  

网址必须类似于:   mysite.com/get_file?file_point=100 - >   这将从字节100

中读取      
      
  1. 从参数(我们示例中的file_point参数)获取偏移量
  2.   
  3. 找出文件大小(File.size)
  4.   
  5. 从offset到length读取文件(相当于PHP中的fseek)
  6.   
  7. 使用send_file发送文件
  8.         

    我不知道如何在Ruby中执行第3步   在上面的步骤。

1 个答案:

答案 0 :(得分:1)

这就是我做到的:

response.header["Accept-Ranges"] = "bytes"
send_file product.pack.path, :type => product.pack_content_type, :x_sendfile=>true

我要求我们的服务器人设置mod_xsendfile,我不知道如何设置它。

此处的教程:http://www.devsource.com/c/a/Techniques/Resumable-File-Downloads-with-ASPNet/2/

在此处阅读内容长度:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

关于流媒体可在此处获取:http://api.rubyonrails.org/classes/ActionController/Streaming.html