Accueil > > > UNZIP => DÉCOMPRESSER UN FICHIER ZIP
UNZIP => DÉCOMPRESSER UN FICHIER ZIP
Information sur la source
Description
Bonjour à tous, D'après ce que j'ai pu voir, beaucoup cherchent à décompresser des fichiers zip (moi le premier) => C'est bien pratique ! ...mais peu savent comment faire (j'ai du chercher un bon moment sur les différents forum pour trouver un algorithme acceptable) La source que je fourni est un dérivé d'un algo dont je me suis servi à la base. Il suffit de s'en servir en compagnie d'un script qui permet d'uploder des fichiers sur un serveur et vous avez un puissant outil !
Source
- <?php
-
-
- function unzip($file, $path='', $effacer_zip=false)
- {/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
- et qui retourne un tableau contenant la liste des fichiers extraits
- Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/
-
- $tab_liste_fichiers = array(); //Initialisation
-
- $zip = zip_open($file);
-
- if ($zip)
- {
- while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
- {
- if (zip_entry_filesize($zip_entry) > 0)
- {
- $complete_path = $path.dirname(zip_entry_name($zip_entry));
-
- /*On supprime les éventuels caractères spéciaux et majuscules*/
- $nom_fichier = zip_entry_name($zip_entry);
- $nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
- $nom_fichier = strtolower($nom_fichier);
- $nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
-
- /*On ajoute le nom du fichier dans le tableau*/
- array_push($tab_liste_fichiers,$nom_fichier);
-
- $complete_name = $path.$nom_fichier; //Nom et chemin de destination
-
- if(!file_exists($complete_path))
- {
- $tmp = '';
- foreach(explode('/',$complete_path) AS $k)
- {
- $tmp .= $k.'/';
-
- if(!file_exists($tmp))
- { mkdir($tmp, 0755); }
- }
- }
-
- /*On extrait le fichier*/
- if (zip_entry_open($zip, $zip_entry, "r"))
- {
- $fd = fopen($complete_name, 'w');
-
- fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
-
- fclose($fd);
- zip_entry_close($zip_entry);
- }
- }
- }
-
- zip_close($zip);
-
- /*On efface éventuellement le fichier zip d'origine*/
- if ($effacer_zip === true)
- unlink($file);
- }
-
- return $tab_liste_fichiers;
- }
-
- /**********************************************************/
-
- $liste = array();
-
- $liste = unzip('mon_fichier.zip','repertoire_destination/');
-
- echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
-
- foreach ($liste as $nom_fichier)
- {
- echo $nom_fichier.'<br />';
- }
-
- ?>
<?php
function unzip($file, $path='', $effacer_zip=false)
{/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
et qui retourne un tableau contenant la liste des fichiers extraits
Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/
$tab_liste_fichiers = array(); //Initialisation
$zip = zip_open($file);
if ($zip)
{
while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
{
if (zip_entry_filesize($zip_entry) > 0)
{
$complete_path = $path.dirname(zip_entry_name($zip_entry));
/*On supprime les éventuels caractères spéciaux et majuscules*/
$nom_fichier = zip_entry_name($zip_entry);
$nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
$nom_fichier = strtolower($nom_fichier);
$nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
/*On ajoute le nom du fichier dans le tableau*/
array_push($tab_liste_fichiers,$nom_fichier);
$complete_name = $path.$nom_fichier; //Nom et chemin de destination
if(!file_exists($complete_path))
{
$tmp = '';
foreach(explode('/',$complete_path) AS $k)
{
$tmp .= $k.'/';
if(!file_exists($tmp))
{ mkdir($tmp, 0755); }
}
}
/*On extrait le fichier*/
if (zip_entry_open($zip, $zip_entry, "r"))
{
$fd = fopen($complete_name, 'w');
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
/*On efface éventuellement le fichier zip d'origine*/
if ($effacer_zip === true)
unlink($file);
}
return $tab_liste_fichiers;
}
/**********************************************************/
$liste = array();
$liste = unzip('mon_fichier.zip','repertoire_destination/');
echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
foreach ($liste as $nom_fichier)
{
echo $nom_fichier.'<br />';
}
?>
Conclusion
Dommage, à priori la fonction zip_open() ne fonctionne pas sur EasyPhp (du moins la version 1.7) même en ayant installé l'extension php_zip :-( Si vous avez une solution je suis preneur.
En attendant vous pouvez tester sur un serveur distant.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
dézipper une archive [ par Elderion ]
je voudrais uploader des archives sur mon site chez Freeet decompresser les archives dans des dossiers.j'ai trouvé plusieurs script pour compress
Compression fichier(s) [ par yoarf ]
Bonjour,Voici mon code qui permet de télécharger un fichier compressé :require("fonctions/zip.lib.php") ; //indiquez le chemin d'accès à la librérie$z
Suppression de fichier après téléchargement [ par girardcimpa ]
Bonjour A partir d'un formulaire je crée un fichier zip et propose à l'utilisateur de l'enregistrer. Mon problème : le fichier zip est créé localemen
problème nom du fichier compressé [ par petercrouch ]
Bonjour,j'arrive à compresser un fichier en utilisant la bibliothèque zip de phpMyAdmin.Le problème c'est pour les fichiers dont le nom porte des acce
Sources de l'explorateur de zip de phpcs? [ par CrazyShooter ]
Bonsoir à la communauté! J'aurais voulu savoir si l'explorateur de zip qui liste les fichiers du code source était disponible en PHP? Merci!
AU SECOURS !!! ZIP ZIP [ par omnikod ]
Voilà mon pb :je voudrais que le script php lise à un certain moment (kan la base dépasse une certaine taille par exemple) les enregistrement d'une t
réaliser et envoyer des fichiers zip [ par pupuce ]
J'ai vu qu'il est possible de créer des fichiers zip, jusque là je vois bien comment faire mais :Je veut pouvoir envoyer le zip au client, sans qu'il
Upload!!! [ par yoman64 ]
A l'aide Pour upload!!!Quand quelqun veut uploader un zip sa dit:Warning: Unable to open 'C:\WINDOWS\Desktop\test.rar' for reading: No such file or di
créé 1 zip avec un file [ par Stephane ]
salubeh voila je voudrai savoir si c possible et si oui comment, créé un zip avec 1 fichier dedan (je n'ai besoin que d'y mettre 1 fichier)merci bcp !
Rajouter un zip à un code source [ par LordDaedalus ]
Une question toute bête Comment on joint un zip à une source ?MerciLord Daedalus
|
Derniers Blogs
[WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson [SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010[SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010 par neodante
L'intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus r...
Cliquez pour lire la suite de l'article par neodante [MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4[MIX10] KEYNOTE PREMIèRE JOURNéE - WINDOWS PHONE 7 ET SILVERLIGHT 4 par cyril
Comme l'année dernière, me revoici à Las Vegas pour Mix10. Ce matin a eu lieu le premier keynote animé par Scott Guthrie. Le keynote s'est déroulé en 2 parties : Silverlight 4.0 et Windows Phone 7 Silverlight 4.0 Le taux de pénétration de Silverli...
Cliquez pour lire la suite de l'article par cyril [MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES[MIX10] RELEASE CANDIDATE DE SILVERLIGHT 4 ET RIA SERVICES par Audrey
C'est enfin officiel, grâce au MIX 2010, les Release Candidate de Silverlight 4 et de RIA Services sont sorties ! Pour les télécharger, voici les liens : Silverlight 4 RC : http://silverlight.net/getstarted/silverlight-4/ RIA Services RC : http://www.micr...
Cliquez pour lire la suite de l'article par Audrey PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7PREMIERES IMPRESSIONS SUR WINDOWS PHONE 7 par odewit
Il est toujours passionnant de decouvrir une nouvelle plate-forme. C'est bien entendu le cas pour Windows Phone 7. Mais au-dela de la passion technique, j'ai le sentiment qu'il s'agit d'un coup de maitre en termes d'ergonomie (tres fluide et epuree) e...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|