2013-11-03 5 views
9

Ich muss eine Zip-Datei extrahieren, die viele Ordner und Dateien enthält mit Schienen ziprails gem. Während Sie auch die Dateien und Ordner so organisieren, wie sie ziped sind.Wie entpacken Sie eine Zip-Datei mit Ordnern und Dateien in Schienen, während die Verzeichnisstruktur beibehalten

Das war nicht so geradlinig wie ich. Bitte sehen Sie die Lösung, die ich unten gefunden (hinzugefügt für zukünftige Referenz)

+0

http://www.railshorde.com/ blog/ruby-unzip-many-zip-Ordner-unter-einem-Verzeichnis – Animesh

Antwort

20

Das hat für mich funktioniert. Hat das gleiche Ergebnis wie beim Entpacken eines gesicherten Ordners mit Unterordnern und Dateien.

Zip::ZipFile.open(file_path) { |zip_file| 
    zip_file.each { |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) 
    } 
    } 

Lösung von dieser Seite: http://bytes.com/topic/ruby/answers/862663-unzipping-file-upload-ruby

1

Extract Zip-Archive in Ruby

Sie benötigen die rubyzip Juwel für diese. Sobald Sie es installiert haben, können Sie diese Methode verwenden, um ZIP-Dateien zu extrahieren:

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 

Sie verwenden es wie folgt aus:

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

extract_zip(file_path, destination) 
Verwandte Themen