Banière
Vous êtes ici --- > Netonoff.com > Informatique > Compresser un dossier avec PHP > Lecture du tutorial

Compresser un dossier avec PHP

Avatar Auteur: : giggs
Créé le : le 09/01/2007 à 10h39
Modifié le :le 09/01/2007 à 12h42
Imprimer ce tutorial
Nous allons essayer de compresser un dossier, et ses fichiers, à l'aide de PHP, et la librairie de PHPMyadmin. Le but étant de regrouper plusieurs fichiers en un seul, et bien entendu de gagner de l'espace.

1) Introduction

J'ai découvert comment compresser des dossiers avec l'aide de PHP, donc je vais vous montrez comment le faire si cela vous intéresse.

Dans ce tutorial, il y a aura un seul fichier PHP, et un dossier comprenant des photos. Le but étant de regrouper toutes les photos en une archive ZIP.

Image utilisateur

2) Le script de compression

Voici le script de compression que j'utilise, vous n'aurez plus qu'à le copier pour l'utiliser. Dans cet exemple le script va compresser un dossier qui est remplie de photos.

Code PHP:
<?
 
 
// Inclure la librairie zip.lib de phpmyadmin
require_once("zip.lib.php");       
 
 
// nom du fichier zip que l'on veut
$fichier_zip = 'dossier_compress.zip';         
 
$zip= new zipfile;
 
// Indiquer le chemin du dossier qui va être compressé
$path = 'le_dossier';       
 
 
 
function zipDir($path,&$zip)
{
   
   if (!is_dir($path)) return;
   
   if (!($dh = @opendir($path))) {
      echo("<b>ERREUR: Une erreur s'est produite sur ".$path."</b><br />");
      return;
   }
   while ($file = readdir($dh)) {
     
      if ($file == "." || $file == "..") continue; // Throw the . and .. folders
      if (is_dir($path."/".$file)) { // Recursive call
         zipDir($path."/".$file,$zip,$i);   
      } elseif (is_file($path."/".$file)) { // If this is a file then add to the zip file
         
         $zip->addFile(file_get_contents($path."/".$file),$path."/".$file);
       echo('fichier '.$path.'/'.$file.' ajouté<br>');
      }
      }
}
 
zipDir($path,$zip);
 
// On recupère le contenu du zip dans la variable $filezipped
$filezipped=$zip->file();       
 
 // indiquer le chemin pour la sauvegarde du dossier zipper
$open = fopen($fichier_zip, "w");   
fwrite($open, $filezipped);
fclose($open);
 
 
 
?>
Mais il faut au préalable faire appel à la librairie de PHPmyadmin

Comme vous le voyer à l'écran le programme à ajouter les fichiers dans une archive ZIP. Maintenant toutes les photos sont regroupées dans un seul fichier!

Vous pouvez télécharger le dossier Zippé pour vous faire une idée du résultat obtenu et le dossier complet des scripts

Maintenant vous pouvez ajouter cette fonction pour compresser des données pour votre site Internet. J'utilise ce script pour que les membres de Netonoff, puissent télécharger les galeries photos qui leur plaisent.

3) Utilisé le script

Pour utilisé le script, c'est très simple, il suffit tout d'abord de le télécharger avec le lien au dessus.

Une fois que vous avez récupérer l'archive , décompresser la, et mettez le dossier "compression", à la racine de votre FTP. A l'intérieur du dossier vous retrouvez:

  • Le dossier avec ses photos
  • La librairie de PHPMYADMIN
  • Le script final

Maintenant pour l'utiliser, il suffit de remplacer les photos du dossier "compression", par vos fichiers que vous voulez compressé.

Ensuite lancer le programme en exécutant le fichier "compess.php", et attendez que le script finisse le zip. Vous récupérez l'archive dans le dossier "compression".

C'est aussi simple que ça!

Vous pouvez largement améliorer ce script, en automatisant le tout pour que n'importe quelle personnes puissent l'utilisé.

Voici les critères d'améliorations:

  • Système d'upload pour envoyer les fichiers dans le dossier
  • Pouvoir choisir un nom du dossier compressé
  • Ajouter la date et l'heure de la compression
  • Faire un lien permettant de télécharger le dossier compressé
  • Le mettre à disposition de vos visiteurs
Maintenant nous allons améliorer le script originale en suivant point par point le cahier des charges ci-dessus.

Voila c'est terminée, si vous avez des questions n'hésitez pas à poster sur le forum.

Retour au Sommaire

Remonter en haut | Exécution en 0.0491 secondes |

© Tous droits réservés 2006 François Marie | Hébergement : WDMédia-hébergement

AMIX-INFORMATIQUE.FR | TAI-JITSU-ALENCON.FR