J'utilise CodeIgniter et je n'arrive pas à comprendre comment décompresser les fichiers!Comment puis-je décompresser un fichier .gz avec PHP?
Répondre
Download the Unzip library et inclure ou autoload
la bibliothèque unzip
$this->load->library('unzip');
Liens sont morts .. permettez-moi de trouver les liens si je peux et mettre à jour ce – fedmich
Utilisez les fonctions mises en œuvre par l'extension Zlib Compression.
Cet extrait montre comment utiliser certaines des fonctions mises à la disposition de l'extension:
// 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);
PHP lui-même a un certain nombre de fonctions pour traiter les fichiers gzip.
Si vous voulez créer un nouveau fichier non compressé, ce serait quelque chose comme ceci.
Remarque: Cela ne vérifie pas si le fichier cible existe en premier, ne supprime pas le fichier d'entrée ou ne vérifie pas les erreurs. Vous devriez vraiment les corriger avant d'utiliser ceci dans le code de production.
// 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);
Note: Cette traite gzip seulement. Cela ne concerne pas le goudron.
J'ai utilisé ce code et cela fonctionne parfait. Il suffit de demander comment le faire fonctionner avec des dossiers à l'intérieur du fichier gz et comment afficher le dossier de sortie des fichiers extraits. –
@RealMan gzip ne supporte que des fichiers uniques. Vous avez besoin d'un .tar.gz pour plusieurs fichiers. Je ne suis pas sûr si PHP a un support intégré pour le tar ou pas. – Powerlord
Si vous avez accès à un système():
system("gunzip file.sql.gz");
Devrait fonctionner mais la plupart du temps system() sera désactivé pour des raisons de sécurité – fedmich
Un fichier .gz est différent d'un fichier .zip, même si normalement un utilitaire qui est capable de décompresser les fichiers .zip est également capable de décompresser. fichiers gz. – kiamlaluno