在 Ruby on Rails 中恢复文件下载
终于知道如何实现这一目标了!
事实证明,它就像启用 xsendfile 并设置标头参数 Accept-Range 一样简单,
请阅读下面我的答案
(顺便说一句,在下面的块引用中,我写了一个新手常见的陷阱 - 就像我所做的那样。我们倾向于认为它应该是手动编程)
URL 必须类似于: mysite.com/get_file?file_point=100 -> 这将从字节 100 读取
- 从参数(在我们的示例中为 file_point 参数)获取偏移量
- 找出文件的大小(File.size)
- 从偏移量到长度读取文件(相当于 PHP 中的 fseek)
- 使用 send_file 发送文件
我不知道如何在 Ruby 中执行步骤 #3 在上述步骤中。
Finally found out how to achieve this!
Turned out it is as simple as enabling xsendfile and setting header parameter Accept-Range
Read my answer below
(by the way, in the block quote below I wrote a common pitfall newbies - like I did - made. We tend to think it should be manually programmed)
URL must be something like:
mysite.com/get_file?file_point=100 ->
this will read from byte 100
- Get the offset from parameter (file_point parameter in our example)
- Find out size of file (File.size)
- Read the file from offset to length (Equivalent of fseek in PHP)
- Send the file using send_file
I dont know how to do step #3 in Ruby
in the steps above.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我就是这样做的:
我要求我们的服务器人员设置 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< /a>
This was how I did it:
I asked our server guy to set up mod_xsendfile, I don't know how to set it myself.
Tutorial here: http://www.devsource.com/c/a/Techniques/Resumable-File-Downloads-with-ASPNet/2/
Read about content-length here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
About streaming is available here: http://api.rubyonrails.org/classes/ActionController/Streaming.html