DevKB
Web Development Knowledge Base
HOME | TOP 20 | WRITE AN ARTICLE |
Sections :



RSS RSS Feed

You too, please publish your useful code snippets in any programming language :
write an article !


Valid HTML 4.0 Transitional

Plateforme d'envoi de gros fichiers en ligne
Dépannage site web
Blog infogérance
Hébergement e-mail

Aurélie Dufour - - 02/04/2008 - vue 7822 fois

Extraire le contenu d'un dossier ZIP en PHP

Le principe de ce tuto : il arrive que des applications stockent automatiquement sur des serveurs des dossiers ZIP. Ces dossiers compressés contiennent parfois des fichiers textes, dont le contenu peut servir pour alimenter une base de données par exemple...

Il faut donc décompresser le dossier avant toute chose : plutôt que de développer toute une fonction PHP pour ça, je vous propose de télécharger la librairie PHP PclZip à cette adresse : www.phpconcept.net/download.php. Décompressez le dossier et placez les 3 fichiers qu'il contient dans le même répertoire que celui qui contient vos archives ZIP.

Le code ci-dessous vous permet de parcourir un dossier et d'en extraire tous les documents des dossiers ZIP qu'il contient. Une partie de manipulation/traitement des documents est à ajouter selon vos besoins.

Comme je suppose que nous travaillons sur un serveur, on ne conserve pas après le dossier décompressé (pour une question de place). En revanche, on peut le déplacer dans un dossier 'archives', pour ne pas le perdre définitivement :

<?php
  //on inclut la librairie de dézippage :
  include('pclzip.lib.php');
  
  //ICI ENTRE "", METTRE LE CHEMIN VERS LE REPERTOIRE CONTENANT LES DOSSIERS ZIP :
  //ici, le point indique que c'est le dossier courant
  $dirParent = opendir(".");
  while($folder = readdir($dirParent))
  {
  	//on cherche tout ce qui est en ".zip"
  	 $tabloFile = explode('.',$folder);
	 //si c'est un dossier ZIP on le décompresse :
	 if($tabloFile[1] == 'zip')
	 {
		  $archive = new PclZip($folder);
		  //gestion des erreurs ici : si le dézippage se met mal, on affiche un message d'erreur
		  if ($archive->extract(PCLZIP_OPT_PATH, $folder, PCLZIP_OPT_REMOVE_PATH, '/') == 0) 
		  {
			die("Error : ".$archive->errorInfo(true));
			
		  }
		  //sinon on confirme que ça s'est bien passé :
		  else echo "Dossier dézippé !<br />";
		  
		  //ici le traitement des fichiers du dossier dézippé (je ne mets qu'une p'tite phrase) :
		  echo "Ici le traitement des fichiers comme vous l'entendez...";
		  
		  //une fois décompressé, on extrait les données utiles du dossier
		  //on déplace le zip qui ne sert plus à rien dans un dossier "archives"
		  if(!is_dir('archives'))mkdir('archives');
		  rename($folder,'archives/'.$folder);
	  }
  	}
	closedir($dirParent);
?> 



Write a comment :
Your name :     E-mail (optional) :

AntiSpam : what animal is visible on this picture ? :

Nos partenaires : iPhone 8 Cases & Protection