ruby - 如何使用 ruby​​ 仅通过 HTTP 下载大文件

标签 ruby http fetch

我只需要通过 HTTP 下载文件的前几千字节。

我试过了

require 'open-uri'
url = 'http://example.com/big-file.dat'
file = open(url)
content = file.read(limit)

但它实际上下载了完整的文件。

最佳答案

这似乎在使用套接字时有效:

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

我很好奇是否有“ ruby 之道”。

关于ruby - 如何使用 ruby​​ 仅通过 HTTP 下载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1120350/

相关文章:

ruby - 来自 Shopify Liquid 的 API 调用

ruby-on-rails - 如何在 Ruby 中添加到数组

ruby-on-rails - "rails generate rspec:install"似乎失败了

接受 GET/POST 请求的 HTTP 测试服务器

Linq for NHibernate 和预加载的 fetch 模式

ruby - 使用默认值初始化散列并递增 1

PHP 文件获取 URL 内容返回 getaddrinfo 失败

HTTP 响应代码为 403 而不是 200,为什么?

android - 无法获取 URL https ://dl-ssl. google.com/android/repository/addons_list-1.xml,原因 : Connection to https://dl-ssl. google.com 被拒绝

swift - 如何快速获取核心数据中的关系