在 Ruby on Rails 中恢复文件下载

发布于 2024-09-01 22:30:23 字数 472 浏览 6 评论 0原文

终于知道如何实现这一目标了!

事实证明,它就像启用 xsendfile 并设置标头参数 Accept-Range 一样简单,

请阅读下面我的答案

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

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

  1. 从参数(在我们的示例中为 file_point 参数)获取偏移量
  2. 找出文件的大小(File.size)
  3. 从偏移量到长度读取文件(相当于 PHP 中的 fseek)
  4. 使用 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

  1. Get the offset from parameter (file_point parameter in our example)
  2. Find out size of file (File.size)
  3. Read the file from offset to length (Equivalent of fseek in PHP)
  4. Send the file using send_file

I dont know how to do step #3 in Ruby
in the steps above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

转身以后 2024-09-08 22:30:23

我就是这样做的:

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< /a>

This was how I did it:

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文