Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails HTTParty内存问题和下载大文件_Ruby On Rails_Ruby_Ruby On Rails 3_Memory_Httparty - Fatal编程技术网

Ruby on rails HTTParty内存问题和下载大文件

Ruby on rails HTTParty内存问题和下载大文件,ruby-on-rails,ruby,ruby-on-rails-3,memory,httparty,Ruby On Rails,Ruby,Ruby On Rails 3,Memory,Httparty,这会导致Ruby的内存问题吗。我知道如果文件大小超过10KB,OpenURI会写入临时文件。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存中吗 src = Tempfile.new("file.pdf") src.binmode src.write HTTParty.get("large_file.pdf").parsed_response 您可以使用Net::HTTP。请参阅(特别是标题为“流式响应主体”的部分) 以下是文档中的示例: uri = URI('htt

这会导致Ruby的内存问题吗。我知道如果文件大小超过10KB,OpenURI会写入临时文件。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存中吗

src = Tempfile.new("file.pdf")
src.binmode
src.write HTTParty.get("large_file.pdf").parsed_response

您可以使用Net::HTTP。请参阅(特别是标题为“流式响应主体”的部分)

以下是文档中的示例:

uri = URI('http://example.com/large_file')

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

  http.request request do |response|
    open 'large_file', 'w' do |io|
      response.read_body do |chunk|
        io.write chunk
      end
    end
  end
end

HTTParty并非用于下载PDF。这是一个为小型XML或JSON交换设计的API客户端。开放URI有什么问题?下面我的答案中有一个使用Net::HTTP的替代方法。太棒了!有些相关的问题,但你们是如何为你们的大文件上传做到这一点的呢?若你们以二进制模式打开文件进行写作,也可能会更好,只需添加
b
标志,比如:
open(filename,'wb'){io | |···································。