 |
Créer des archives zip avec php
|
|
Plateforme : PHP Détails : Compression zip avec php |
Avant de se lancer ?
Pour compresser des archives ou les décompresser via php vous devez au préalable disposer de la ziplib : Cliquez ici pour la télécharger
Vérifiez aussi que le plugin "php_zip" est bien activé sur votre serveur en exécutant ce petit script :
Comment compresser des fichiers ?
Voici la démarche à suivre pour compresser des fichiers avec la zip lib. La première partie permet de zipper un seul fichier :
<?php
require( "lib/zip.lib.php" ) ; //indiquez le chemin d'accès à la lib
$zip = new zipfile( ) ; //on crée une nouvelle instance zip
$nom_fichier = "mon_document.doc" ; //nom du fichier à compresser $fo = fopen($nom_fichier,'r') ; //on ouvre le fichier $contenu = fread($fo, filesize($nom_fichier)) ; //on enregistre le contenu fclose($fo) ; //on ferme le fichier
$zip->addfile($contenu, $nom_fichier) ; //on ajoute le fichier
$archive_zip = $zip->file() ; //on associe l'archive
$open = fopen( "monrep/fichier.zip" , "wb"); //crée le fichier zip fwrite($open, $archive_zip); //enregistre le contenu de l'archive fclose($open); //ferme l'archive
?>
|
cette 2ème partie permet de compresser plusieurs fichiers :
<?php
require( "lib/zip.lib.php" ) ; // librairie ZIP
$zip = new zipfile () ; //on crée une instance zip
// liste des fichiers à compresser $files = array ( 'monrep/doc1.doc' , 'monrep/doc2.doc' , 'monrep/doc3.doc' ) ;
$i = 0 ; while ( count( $files ) > $i ) {
$fo = fopen($files[$i],'r') ; //on ouvre le fichier $contenu = fread($fo, filesize($files[$i])) ; //on enregistre le contenu fclose($fo) ; //on ferme fichier
$zip->addfile($contenu, $files[$i]) ; //on ajoute le fichier $i++; //on incrémente i
}
$archive = $zip->file() ; // on associe l'archive
// on enregistre l'archive dans un fichier $open = fopen( 'monrepertoire/monfichier.zip' , "wb"); fwrite($open, $archive); fclose($open);
?>
|
cette dernière partie permet de compresser un fichier et de l'envoyer à l'internaute :
// ... // voir le code plus haut pour crée l'archive zip
$archive = $zip->file()
// code à insérer à la place des 3lignes ( fopen, fwrite, fclose ) header('Content-Type: application/x-zip') ; //on détermine les en-tête header('Content-Disposition: inline; filename=monfichier.zip') ;
echo $archive ;
?> |
Et la décompression des archives ?
Dans la plupart des cas la compression zip suffit c'est pour cela que cette partie n'est pas développer. Mais il est possible de lire une archive zip et de la décompresser. Pour vous donner quelques indices suivez les liens : Librairie pclzip Fonctions zip php
|
Commenter ce wiki sur le forum