Ruby 获取下载进度

Ruby get download progression

如何从 link 下载文件并获取下载进度以便显示它?

我对 open-uri 和 typhoeus 知之甚少 gem(我同时使用)在内部管理下载,我不知道如何从它们那里获取下载进度。

我想我正在寻找一种暂停下载的方法,并在每次收到数据包时获取更新值的进度,但我不知道如何继续。

我还可以使用另一个 gem 吗?如果是,是哪一个,为什么?

您需要将它作为一个分块请求来执行,如果您使用它们的高级 API(例如 open(uri).read),这就是像 open-uri 这样的库在幕后所做的事情。

基于 https://www.ruby-forum.com/topic/170237:

的未测试示例
u = URI.parse(uri)
s = ""
progress = 0

Net::HTTP.start(u.host, u.port) do |http|
  http.request_get(u.path) do |response|
    response.read_body do |chunk|
      s << chunk
      progress += chunk.length
      puts "Downloaded #{progress} so far"
    end
  end
end
puts "Received:\n#{s}"