compression zip récursive en PHP
Mercredi, janvier 6, 2010 18:18Ce script permet la compression Zip en PHP et ce récursivement !
que veux dire récursivement?
dans notre cas, ça vous permet de compresser un répertoire et tous ses sous-répertoires et fichiers sur plusieurs niveaux, le tout dans un zip
qu’est ce qu’un fichier Zip ?
C’est un format de fichier qui permet de mettre tous les fichiers dans 1 seul et unique fichier compressé.
ça facilite l’échange de fichier et permet un gain de taille du à la compression.
Qu’est ce que SPL ?
Standard PHP Library est une collection d’interfaces et de classe intégrées au PHP qui permettent la résolution de problème connu. tel que parcourir un répertoire
Documentation SPL
Voici le code source:
-
if(substr(phpversion(), 0, 1) < 5)
-
exit("Vous devez utiliser <strong>PHP5 ou supérieur</strong>.<br />Vous utilisez <strong>".phpversion()."</strong>");
-
-
if(false === extension_loaded('zip'))
-
exit("Le module PHP5 <strong>Zip</strong> n'est pas chargé");
-
-
$repertoire_a_compresser = dirname(__FILE__);
-
-
-
$iter = new RecursiveIteratorIterator(
-
new RecursiveDirectoryIterator($repertoire_a_compresser,RecursiveDirectoryIterator::KEY_AS_FILENAME)
-
,RecursiveIteratorIterator::SELF_FIRST);
-
-
-
$zip = new ZipArchive();
-
$fichier= '/tmp/'.uniqid().'.zip';
-
$res = $zip->open($fichier, ZipArchive::CREATE);
-
-
-
foreach ($iter as $entry):
-
$filename = str_replace($repertoire_a_compresser, '', $entry);
-
-
if('/' === $filename{0})
-
$filename = substr($filename, 1);
-
-
$zip->addFile($entry, $filename);
-
-
endforeach;
-
-
$zip->close();
-
-
-
-
header('Content-Type: application/octet-stream');
-
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'."\n");
-
header('Content-Disposition: attachment; filename="compression-zip-php.zip"'."\n");
-
header('Pragma: no-cache');
-
-
readfile("$fichier");
-
unlink($fichier);
-
?>
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.


