Как загрузить через HTTP только часть большого файла с рубином

Если бы Ваш код, как предполагается, работает в различных средах, я рассмотрел бы использование Environment.NewLine постоянный, так как это конкретно эти newline используется в определенной среде.

line = line.Replace(Environment.NewLine, "newLineReplacement");

Однако, если Вы получаете текст из файла, происходящего в другой системе, это не могло бы быть корректным ответом, и необходимо заменить любой постоянной новой строкой, используется в другой системе. Это обычно будет \n или \r\n.

5
задан Andrew Grimm 21 August 2010 в 07:48
поделиться

2 ответа

Кажется, это работает при использовании сокетов:

require 'socket'                  
host = "download.thinkbroadband.com"                 
path = "/1GB.zip" # get 1gb sample file
request = "GET #{path} HTTP/1.0\r\n\r\n"
socket = TCPSocket.open(host,80) 
socket.print(request)        

# find beginning of response body
buffer = ""                    
while !buffer.match("\r\n\r\n") do
  buffer += socket.read(1)  
end           

response = socket.read(100) #read first 100 bytes of body
puts response

Мне любопытно, существует ли «рубиновый путь».

4
ответ дан 14 December 2019 в 04:45
поделиться

Обратите внимание на « OpenURI возвращает два разных объекта ». Вы можете злоупотребить имеющимися там методами, чтобы прервать загрузку / выбросить остальную часть результата после установленного лимита.

0
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: