代码之家  ›  专栏  ›  技术社区  ›  arbales

下载并编写.tar.gz文件而不损坏

  •  4
  • arbales  · 技术社区  · 16 年前


    使用MacRuby,我发现文件似乎与引用(在 但档案馆拒绝提取。我现在尝试的是: https://gist.github.com/arbales/8203385
    谢谢!

    3 回复  |  直到 12 年前
        1
  •  11
  •   Theo    16 年前

    我已成功下载并提取GZip文件,代码如下:

    require 'open-uri'
    require 'zlib'
    
    open('tarball.tar', 'w') do |local_file|
      open('http://github.com/jashkenas/coffee-script/tarball/master/tarball.tar.gz') do |remote_file|
        local_file.write(Zlib::GzipReader.new(remote_file).read)
      end
    end
    
        2
  •  3
  •   user253455    16 年前

    require 'open-uri'
    
    open(out_file, 'w') do |out|
      out.write(open(url).read)
    end
    

    http://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/classes/OpenURI/OpenRead.html#M000832

        3
  •  1
  •   Marcel Jackwerth    16 年前

    上一次我和Ruby一起收到文件的时候我忘了打电话 file.binmode 刚好在…之后 File.open . 我花了好几个小时才找出问题所在。这对你的问题有帮助吗?

        4
  •  0
  •   Michael Berkowski    6 年前

    .tar.gz 具有 open-uri 通过一个简单的 open()

    download.tar.gz 在磁盘上,它实际上包含的是 download.tar 未压缩;这可以不受束缚。这似乎是由于 Accept-encoding: gzip 上的标题 Accept-encoding 指向远程的可选哈希参数中的头 :

    open('/local/path/to/download.tar.gz', 'wb') do |file|
      # Send a blank Accept-encoding header
      file.write open('https://example.com/remote.tar.gz', {'Accept-encoding'=>''}).read
    end