用Net::HTTP从远程下载的Gzipped文件没有被放气。

问题描述 投票:-1回答:1

我读到Net::HTTP在编码为gzip时自动解压文件...我下载了一个xml文件,但保存在我的文件夹中的文件仍然是一个.gz文件,有什么办法吗?

   uri = URI(URI.encode(URL))
    Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
      request = Net::HTTP::Get.new(uri.path, { "Accept-Encoding" => "gzip", "User-Agent" => "gzip" })

      request.basic_auth AUTHENTICATION[:username], AUTHENTICATION[:password]

      http.request request do |response|
        open "./storage/file/index_full.xml.gz", 'wb' do |io|
          response.read_body do |chunk|
            puts "Writing  #{chunk.length} bits ..."
            io.write chunk
          end
        end
      end
    end
ruby
1个回答
0
投票

这个 文件 声称Net::HTTP会自动解压放气的响应。为了做到这一点,客户端必须设置 Accept-Encoding 头,服务器必须设置 Content-Encoding 页眉 此处.

您正在使用的服务器没有设置好的 Content-Encoding 头,因此客户端不会解压响应。

服务器确实发送了一个gzip压缩的字节流,但这是不够的。(如果所有的客户端都解压了所有被 gzip 压缩的东西,你将无法下载任何的 .tar.gz 文件原样)。)

© www.soinside.com 2019 - 2024. All rights reserved.