只读带有rails的远程文件的一部分

时间:2016-10-28 20:10:38

标签: ruby-on-rails ruby io streaming

我需要输入前X个字符/字节/大型远程XML文件。

下面的代码成功地将文件拉下来,但我无法弄清楚如何在一定数量/数量的数据后将其剪掉。

    uri = "https://domain.com/file.xml"

    Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
        request = Net::HTTP::Get.new uri
        http.set_debug_output $stderr

        http.request request do |response|
          StringIO.open do |str|
            response.read_body do |chunk|
                str.puts chunk
            end
          end
        end
    end

我尝试了类似下面的内容,但是创建了一个字符串,其中第一个块的内容反复重复。

response.read_body do |chunk|
    while str.size < 50000
     str.puts chunk
    end
  end

我也试过了:

response.read_body do |chunk|
   if str.size > 50000 
      puts "BIG ENOUGH!"
      break
   end
end

这也导致结果str成为第一个块的内容,反复重复,直到达到指定的大小限制。

0 个答案:

没有答案