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}"
如何从 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}"