Annonce ToutSurTout

Bienvenue sur toutsurtout.biz

Déjà 15 ans !

Radio TST

Si vous souhaitez participer vous aussi aux discussions sur le forum, il faut vous inscrire ou vous identifier.

Le Thème TST Automne est maintenant en place.

Les inscriptions sont actuellement OUVERTES.

Message 1 Discussion postée le 14-10-2012 à 13:23:21

Loic
Avatar de Loic


Titre: Administrateur d'élite
Avancement: Niveau 5
Lieu: Avec Solenne
Date d'inscription: 26-09-2009
Messages: 107 780
Site web

Créer des archives 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 :

<?php

$archive = $zip->file()

// Code à insérer à la place des 3 lignes ( 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 ;

?>


http://www.toutsurtout.biz/img/UserBarTST.gif
http://www.toutsurtout.biz/img/Sign-Loic.gif
Loic DL un jour, Loic DL toujours ...