在Ruby net / http PUT请求中流式传输数据

时间:2019-02-03 21:59:13

标签: ruby rest streaming put

Ruby-doc Net/HTTP中,有一个流式响应正文的详细示例-在尝试下载大文件时适用。

我正在寻找一个等效的代码片段,以通过PUT上传文件。花了很多时间试图使代码正常运行。我想我需要实现一个特定的接口并将其传递给request.body_stream

我需要,因为我想在文件上载时更改其内容,以便在上载时可以访问缓冲的块。只要可以使用流式传输,我很乐意使用诸如http.rb或rest-client之类的库。

提前谢谢! 供参考,以下是有效的非流版本


    uri = URI("http://localhost:1234/upload")

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

      File.open("/home/files/somefile") do |f|
        request.body = f.read()
      end

      # Ideally I would need to use **request.body_stream** instead of **body** to get streaming

      http.request request do |response|
        response.read_body do |result|
          # display the operation result   
          puts result
        end
      end
    end

0 个答案:

没有答案