Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Download resume with NET::HTTP

1 view
Skip to first unread message

Alex Dj

unread,
May 9, 2008, 10:18:40 AM5/9/08
to
I'm wondering is there any way to do interrupt file download and then
resume it from the same spot?
The way I download file:

Net::HTTP.start("server.com") { |http|
response = http.request_get('/some/path') {|response|
file_length = response['Content-Length']
File.open('video.avi', 'w') {|f|
response.read_body do |str| # read body now
puts str.length
f.write str
end
}
}
}

I'm not using open-url as I found that open() method first downloads
whole file and then starts to write it. Not for me....

Cheers Alex
--
Posted via http://www.ruby-forum.com/.

Marcelo

unread,
May 9, 2008, 11:03:40 AM5/9/08
to
On Fri, May 9, 2008 at 8:18 AM, Alex Dj <dji...@gmail.com> wrote:

> Net::HTTP.start("server.com") { |http|
> response = http.request_get('/some/path') {|response|

create your request by hand:

req = Net::HTTP::Get.new(path)
req.range = ...

In HTTP 1.1 range has the form "[lower]-[upper]", so "[lower]-" is
valid. I'm not sure what range= takes, you get to try it :-)

Marcelo

Alex Dj

unread,
May 9, 2008, 11:34:20 AM5/9/08
to
Thanks Marcelo,

> In HTTP 1.1 range has the form "[lower]-[upper]", so "[lower]-" is
> valid. I'm not sure what range= takes, you get to try it :-)

I found that its "Range: bytes=10000-", something like this. I wonder if
I can use this header to download the same file from different mirrors
i.e. have several


req = Net::HTTP::Get.new(path)

but with different ranges and write them to the same file with random
access. Would it be a right technique for this idea?

Thanks Alex

0 new messages