Créer des archives zip avec php


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 :


<?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




Commenter ce wiki sur le forum

- haut de page -



Partager cet article

Submit to Digg Submit to Facebook Submit to LinkedIn