You speak english?
Plateforme : PHP
Date : 2009
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 :

<?php
php_info() ;
?>

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



About

Créateur de solutions innovantes

Keep in touch

wakdev - PGP Public Keyjulien [arobase] wakdev.com

All rights reserved : wakdev
Tread softly because you tread on my internet...