ruby - Net::HTTP.get 显示进度

标签 ruby

require 'net/http'

File.write(file_name, Net::HTTP.get(URI.parse(url)))

我想向用户展示这里发生了什么,比如进度,因为文件的大小可能很大。但是只有用户可能感兴趣的信息,而不是所有的调试信息。

Net::HTTP.get有这样的能力吗?

最佳答案

您可以在这里找到相关信息:http://ruby-doc.org/stdlib-2.1.1/libdoc/net/http/rdoc/Net/HTTP.html#class-Net::HTTP-label-Streaming+Response+Bodies

文档中用于此类事情的示例片段是:

require 'net/http'

uri = URI("http://apps.sfgov.org/datafiles/view.php?file=sfgis/citylots.zip")

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri

  http.request request do |response|
    file_size = response['content-length'].to_i
    amount_downloaded = 0

    open 'large_file', 'wb' do |io| # 'b' opens the file in binary mode 
      response.read_body do |chunk|
        io.write chunk
        amount_downloaded += chunk.size
        puts "%.2f%" % (amount_downloaded.to_f / file_size * 100)
      end
    end
  end
end

关于ruby - Net::HTTP.get 显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878587/

相关文章:

ruby-on-rails - rails View : Idiomatic way to show description for an association object that can be null?

ruby-on-rails - Rails4.1 : AWS errors missing region

ruby - 字符串到数组到 ruby​​ 中的多维哈希

ruby-on-rails - 处理测试中的响应代码而不会污染ApplicationController

ruby-on-rails - 如何在不编写自定义博客应用程序的情况下快速将 Wordpress 博客添加到现有的 RoR 应用程序

ruby - 从电子邮件正文中删除标题字符

ruby - 为什么 concat 和 << 在分配时不更改字符串变量

ruby-on-rails - 尝试使用 vagrant 安装预先配置的虚拟盒。初始化失败

ruby-on-rails - 运行单个迁移文件

ruby - Rails 应用程序在未使用后需要一段时间才能加载