【问题标题】:How to unzip a zip file containing folders and files in rails, while keeping the directory structure [duplicate]如何解压缩包含rails中文件夹和文件的zip文件,同时保持目录结构[重复]
【发布时间】:2013-11-14 07:31:51
【问题描述】:

我需要使用 rails ziprails gem 提取一个包含许多文件夹和文件的 zip 文件。同时还保持文件和文件夹按压缩方式组织。

这并不像我那样直截了当。请查看我在下面找到的解决方案(添加以供将来参考)

【问题讨论】:

标签: ruby-on-rails ruby zip


【解决方案1】:

这对我有用。解压缩带有子文件夹和文件的压缩文件夹时,结果与预期相同。

Zip::Zip.open(file_path) do |zip_file|
  zip_file.each do |f|
    f_path = File.join("destination_path", f.name)
    FileUtils.mkdir_p(File.dirname(f_path))
    zip_file.extract(f, f_path) unless File.exist?(f_path)
  end
end

来自该站点的解决方案: http://bytes.com/topic/ruby/answers/862663-unzipping-file-upload-ruby

【讨论】:

  • 对我来说是Zip::File 而不是Zip::ZipFile
【解决方案2】:

在 Ruby 中提取 Zip 档案

为此,您需要 rubyzip gem。安装后,您可以使用此方法提取 zip 文件:

require 'zip'

def extract_zip(file, destination)
  FileUtils.mkdir_p(destination)

  Zip::File.open(file) do |zip_file|
    zip_file.each do |f|
      fpath = File.join(destination, f.name)
      zip_file.extract(f, fpath) unless File.exist?(fpath)
    end
  end
end

你可以这样使用它:

file_path   = "/path/to/my/file.zip"
destination = "/extract/destination/"

extract_zip(file_path, destination)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多