2010-07-20 5 views
9

Ich benutze CodeIgniter und ich kann nicht herausfinden, wie man Dateien entpackt!Wie kann ich eine .gz-Datei mit PHP entpacken?

+0

Eine gz-Datei unterscheidet sich von einer ZIP-Datei, auch wenn normalerweise ein Dienstprogramm, das in der Lage ist, Dateien zu dekomprimieren .zip ist auch in der Lage zu dekomprimieren. gz-Dateien. – kiamlaluno

Antwort

2

Download the Unzip library und umfassen oder autoload die unzip Bibliothek

$this->load->library('unzip'); 
+0

Links sind tot .. lass mich die Links finden, wenn ich kann und aktualisieren – fedmich

3

die Funktionen durch die Zlib Compression Erweiterung implementiert verwenden.

Dieser Code-Schnipsel zeigt, wie aus der Erweiterung zur Verfügung gestellt einige der Funktionen nutzen:

// open file for reading 
$zp = gzopen($filename, "r"); 

// read 3 char 
echo gzread($zp, 3); 

// output until end of the file and close it. 
gzpassthru($zp); 
gzclose($zp); 
36

PHP selbst hat eine Reihe von Funktionen für die mit gzip-Dateien handeln.

Wenn Sie eine neue, unkomprimierte Datei erstellen möchten, wäre es in etwa so.

Hinweis: Dies überprüft nicht, ob die Zieldatei zuerst existiert, löscht nicht die Eingabedatei oder führt keine Fehlerprüfung durch. Sie sollten diese wirklich beheben, bevor Sie dies im Produktionscode verwenden.

// This input should be from somewhere else, hard-coded in this example 
$file_name = 'file.txt.gz'; 

// Raising this value may increase performance 
$buffer_size = 4096; // read 4kb at a time 
$out_file_name = str_replace('.gz', '', $file_name); 

// Open our files (in binary mode) 
$file = gzopen($file_name, 'rb'); 
$out_file = fopen($out_file_name, 'wb'); 

// Keep repeating until the end of the input file 
while(!gzeof($file)) { 
    // Read buffer-size bytes 
    // Both fwrite and gzread and binary-safe 
    fwrite($out_file, gzread($file, $buffer_size)); 
} 

// Files are done, close files 
fclose($out_file); 
gzclose($file); 

Hinweis: Diese befasst sich mit gzip nur. Es handelt sich nicht um Teer.

+1

Ich habe diesen Code verwendet und es funktioniert perfekt. nur fragen, wie es funktioniert mit Ordnern in der gz-Datei und wie man den Ausgabeordner von extrahierten Dateien zeigt. –

+1

@RealMan gzip unterstützt nur einzelne Dateien. Sie benötigen eine .tar.gz für mehrere Dateien. Ich bin nicht sicher, ob PHP integrierte Unterstützung für Teer hat oder nicht. – Powerlord

3

Wenn der Zugang zum System haben():

system("gunzip file.sql.gz"); 
+0

Sollte funktionieren aber die meiste Zeit System() wird aus Sicherheitsgründen deaktiviert – fedmich