Sélectionnez votre langue

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
Android | iOS | Web | NFC

Keep in touch