begin process at 2010 02 10 11:04:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > UNZIP => DÉCOMPRESSER UN FICHIER ZIP

UNZIP => DÉCOMPRESSER UN FICHIER ZIP


 Information sur la source

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :unzip, zip, decompresser, dezipper, archive Niveau :Initié Date de création :28/02/2006 Vu / téléchargé :40 530 / 1 290

Auteur : darkduck

Ecrire un message privé
Commentaire sur cette source (50)
Ajouter un commentaire et/ou une note

 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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip LIRE UNIQUEMENT LES X DERNIERS OCTETS D'UN FICHIER DISTANT (... par Equilibrius

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PUBLIPOSTAGE (ZIP ET MEL) par ddempt
Source avec Zip CLASS MYSQL/SQLITE + SAUVEGARDE DE BDD + COMPRESSION ZIP par Gueko
Source avec Zip Source avec une capture EXTRACTION DE ZIP (QUI MARCHE SUR FTP ET EASYPHP SANS PROBLÈ... par bonxp
Source avec Zip CLASSE PERMETTANT DE ZIPPER UNE LISTE DE FICHIERS OU UN DOSS... par vduffaut
Source avec Zip Source avec une capture SYSTEM DE TÉLÉCHARGEMENT POUR GALERIE PHOTOS par Thienou

Commentaires et avis

Commentaire de sjon le 01/03/2006 04:16:21

Généralement on cherche plutöt à compresser les fichiers côté serveur pour gagner de l'espace disque
et notament lors d'un upload ...

Par ailleurs je ne vois pas en quoi cette source est au niveau initié en vu de la documentation : http://fr.php.net/manual/fr/function.zip-read.php par exemple ...

ou encore :

http://fr.php.net/manual/fr/ref.zip.php pour être plus général ...


Mais cela n'appartient qu'à moi ...

Commentaire de sjon le 01/03/2006 04:19:15

PS : Notez que je ne juge point la valeur " codesque " ici j'en suis incapable ...

Commentaire de sjon le 01/03/2006 05:21:13

Niveau solution windows : WAMP ...

Commentaire de malalam le 01/03/2006 09:26:16 administrateur CS

Hello,

je suis d'accord pour le niveau 'initié', c'est un peu élevé pour le niveau du source.
D'autant plus que la programmation pourrait être perfectible...

while ($zip_entry = zip_read($zip)) : tu n'as pas tenu compte de ce que je t'ai déjà dit sur le forum.
Le principe est le même que readdir() :
while (false !== ($zip_entry = zip_read ($zip)))

Ici : $zip = zip_open($file);  puisque tu testes $zip après, tu devrais mettre un $zip = @zip_open ($file);
Et retourner false, ou un message d'erreur, si le fichier n'a pas pu être ouvert (plutôt qu'un tableau vide...).

Ensuite, tu utilises 2 fois zip_entry_name (), ce qui est inutile, tu pourrais ne l'appeler qu'une fois, le stocker dans une variable et réutiliser cette variable par la suite.

Ces détails mis à part (j'en ai sans doute oublié), pourquoi pas, on a peu de sources de ce genre.

Commentaire de WhiteDwarf le 03/03/2006 16:29:41

Ca peu servir effectivement, j'ai développé un code comme celui ci pour mon web FTP, ca permet d'uploader des fichier zip, et ensuite le serveur les décompresse et remplace les fichiers du site par ceux présents dans le zip, c'est pas mal et rapide... donc je pense que c'est un code qui peut avoir une bonne utilitée :)

Commentaire de aze555666 le 06/03/2006 19:48:19

c'est vrai que ce serait pratique de pouvoir ziper, par exmeple pour pouvoir récupérer plusieurs fichiers sur son site si on n'a as accès au ftp (si je veux modifier mon site à partirs du lycée, par exemple).

Pour la fonction open_zip, il y a surement moyen de la reprogrammer. Il faut bien sur les spécifications du format zip mais ça doit se trouver.

Commentaire de WhiteDwarf le 06/03/2006 23:54:51

y'a une source sur ce site qui zippe les fichiers sur serveurs, je ne sais plus laquelle c'est mais ca ne doit pas être très compliqué de la retrouver...

aller @+

Commentaire de nemoDreamer le 07/03/2006 10:32:16

pour activer zip_open():
décommenter la ligne
extension=php_zip.dll
dans php.ini....

mais cela me donne qd même un "Warning: zip_open() Cannot open zip archive ...". Je suis en train de voir si je peux résoudre ça par un update de mon extension...

Commentaire de darkduck le 07/03/2006 10:50:23

Cela reviens a activer l'extension php_zip mais ça ne prend pas en compte les ZIP uniquement les archives TAR ou GZ je crois

Commentaire de nemoDreamer le 07/03/2006 11:40:31

yes, je viens de m'en rendre compte...
aussi:
"Zip File Functions (Read Only Access): zip_open(): This module uses the functions of the » ZZIPlib library by Guido Draheim. You need ZZIPlib version >= 0.10.6."

et en télechargeant la dll requise (zzip-1.dll de http://zziplib.sourceforge.net/), je n'arrive pas à la faire accepter par PHP. apparement, le packet à aussi besoin de zlib-1.dll, qui n'est pas inclus dans cette distribution...

le recherche continue...
le comble: mon serveur distant ne veut rien savoir de zip_open()... :(

Commentaire de larr le 09/03/2006 17:39:40

je trouve cette source pratique mais il manque la gestion des sous repertoire

Commentaire de darkduck le 09/03/2006 19:20:48

Salut, comment ça la gestion des sous répertoires ?
Il suffit de mettre dans $path le chemin du sous-répertoire de destination et s'il n'est pas créé, il y a une création automatique.

Ex : si $path = 'repertoire/sous1/sous2/'; => Ne pas oublié le slash / à la fin

Il y aura création (s'ils n'existent pas) des répertoires "repertoire", "sous1" et "sous2"

Commentaire de larr le 09/03/2006 19:28:23

Bah dans mon zip il y avait plein de sous repertoire
et ton scripte a en faite crée des fichiers nomé
repertoire.fichier.php
au lieu de creer un repertoire et d'y inclure le fichier.php

Commentaire de aze555666 le 10/03/2006 18:28:49

il faut ajouter une fonction ajoutant des / à la place des . , sauf si c'est le point de l'extension.

Commentaire de nemoDreamer le 10/03/2006 18:39:55

et pour des noms de fichier avec plus qu'un point?! :)
non, il doit y avoir une manière de parcourir les répertoires du ZIP recursivement, pour ensuite créer les DIR's requis. faudra probablement recommencer la source à zéro, en pensant aussi aux divers cas d'erreurs...

Commentaire de larr le 10/03/2006 19:30:17

function unzip($dir, $file, $verbose = 0) {

   $dir_path = "$dir$file";
   $zip_path = "$dir$file.zip";
  
   $ERROR_MSGS[0] = "OK";
   $ERROR_MSGS[1] = "Zip path $zip_path doesn't exists.";
   $ERROR_MSGS[2] = "Directory $dir_path for unzip the pack already exists, impossible continue.";
   $ERROR_MSGS[3] = "Error while opening the $zip_path file.";
  
   $ERROR = 0;
  
   if (file_exists($zip_path)) {
  
         if (!file_exists($dir_path)) {
            
           mkdir($dir_path);  
        
         if (($link = zip_open($zip_path))) {
            
           while (($zip_entry = zip_read($link)) && (!$ERROR)) {
              
               if (zip_entry_open($link, $zip_entry, "r")) {
          
                 $data = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                 $dir_name = dirname(zip_entry_name($zip_entry));
                 $name = zip_entry_name($zip_entry);
                
                 if ($name[strlen($name)-1] == '/') {
                        
                       $base = "$dir_path/";

                     foreach ( explode("/", $name) as $k) {
                        
                       $base .= "$k/";
                          
                       if (!file_exists($base))
                           mkdir($base);
                          
                     }  
                      
                 }
                 else {
                
                     $name = "$dir_path/$name";
                    
                     if ($verbose)
                       echo "extracting: $name<br>";
                      
                   $stream = fopen($name, "w");
                   fwrite($stream, $data);
                  
                 }
                
                 zip_entry_close($zip_entry);
                
               }
               else
                 $ERROR = 4;  

             }
            
             zip_close($link);
            
           }
           else
             $ERROR = "3";
       }
       else
         $ERROR = 2;
   }
   else
       $ERROR = 1;
    
   return $ERROR_MSGS[$ERROR];      
  
}  

---
pour deziper
$dir = "" ; ## ou alors /home/votresite/www
$file = "nomdufichier" ; ## sans metre .zip il s'en charge tout seul
unzip($dir, $file, 1);



de source php.net

Commentaire de nemoDreamer le 12/03/2006 16:22:16

aaaaah!
solide.
malheureusement, je n'ai toujours pas pu installer le support zip sur mon apache/php... :(

Commentaire de larr le 12/03/2006 16:25:46

normalement y'a pas besoin de changer dans la conf d'apache j'ai testé sur des version de php 4.* et 5.* j'ai pas eu besoin de changer qqchose dans le php.ini

Commentaire de nemoDreamer le 12/03/2006 17:39:14

mon build de php n'inclut pas le support zip, seulement gz et tar... tu peux me dire quelles extensions dll tu as activé dans ton php.ini pour que cela marche?
merci d'avance!

Commentaire de WhiteDwarf le 12/03/2006 22:43:06

Si tu as Easyphp va dans le répertoire ou tu l'a installé et lance phpini.exe et la tu active zlib.dll (tout en bas de la liste) et voilà, t'as l'extention Zip !

Commentaire de Mezmerize le 17/03/2006 16:52:03

J'ai essayé d'utiliser le script fourni par Larr, seulement j'ai 3 types d'erreurs qui me sont renvoyées :

Warning: mkdir(...): Permission denied in ... on line 40

Warning: fopen(...): failed to open stream: No such file or directory in ... on line 52

Warning: fwrite(): supplied argument is not a valid stream resource in ... on line 53
extracting: ...

Les points de suspensions étant les noms de fichiers bien entendu.
D'où cela peut il provenir?
Merci d'avance.

Commentaire de larr le 17/03/2006 17:56:28

essais de changer le chmod du script

Commentaire de pumbaak le 16/04/2006 12:33:38

Franchement, je n'arive pas à m'en servir, comment faire ? j'ai Uploader un fichier "archive.zip" et  "unzip.php" sur mon FTP....j'appelle la page unzip.php dans mon explorer...
rien ne se passe  : "Warning: zip_open() Cannot open zip archive util.zip in /home.2/monsite/www/unzip.php on line 11
Le fichier zip contenait 0 fichier(s) :"

????

Help please...

Commentaire de darkduck le 16/04/2006 15:08:53

Le module de décompression de fichier zip ne doit pas etre installé sur le serveur que tu utilises

Commentaire de WhiteDwarf le 16/04/2006 15:26:38

Bah dans un sens si, sinon il ne dirais pas "Cannot open zip archive", c'est peut être un problème au niveau des permissions...

Commentaire de pumbaak le 16/04/2006 15:50:58

Effectivement, je viens de tout passer en chmod "777" et j'ai ce message, différent donc du 1er... :

"Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request."

Commentaire de pumbaak le 16/04/2006 15:53:29

Effectivement, je viens de tout passer en chmod "777" et j'ai ce message, différent donc du 1er... :

"Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request."

Commentaire de WhiteDwarf le 16/04/2006 20:39:17

La je t'avoue que je suis perplexe, tu tournes sur quel serveur ?

Commentaire de pumbaak le 17/04/2006 02:45:13

Honnetement je n'en sais rien...c'est un hébergement chez OVH mutualisé...

Commentaire de laurentmars le 11/05/2006 09:57:22

Salut tous,

j'ai un problème de droit avec le dezippage. Je suis sur un serveur dédié fedora dont je n'ai pas les droits root. Lorsque je dézippe un fichier sur le serveur, tout fonctionne (j'utilises une librairie pclzip), mais je suis sur un serveur plesk.

Mon groupe est "psacln", et les fichiers dezippés sont du groupe "apache". Il m'est donc impossible de modifier ou supprimer les répertoires et fichiers créés. Y a t'il une technique pour pouvoir au moment du dezippage faire executer le script avec comme groupe psacln (sans avoir recours à un suexec ou suphp vu que je n'ai pas les droits root?)

Quelqu'un a t'il été confronté à ce problème?

Commentaire de toover le 19/06/2006 20:52:13

Bonjour.

La source de php.net est au poil, c'est celle que je conseillerais.
Cependant il reste un problème: dans le cas d'un gros fichier zip, ce script met en mémoire tout le zip. Or certains serveurs limitent l'allocation en mémoire pour le php à 16MO. Et impossible d'accéder au php.ini.

Donc comment faire pour dézipper un gros fichier sans saturer la mémoire? Une question encore un peu "dans le vent" étant donné que je ne me suis pas encore vraiment pris la tête sur ce problème.

Commentaire de WhiteDwarf le 19/06/2006 21:27:47

Bah t'envoie plusieurs fichiers... :p

Commentaire de toover le 19/06/2006 21:44:53

lol;
Mais ça perd tout le côté pratique qui était de n'avoir à sélectionner qu'un seul fichier... Et il n'existe pas de méthode pour intéragir du côté du client pour lister tout le contenu d'un dossier! Donc j'insiste sur ma question finalement, après avoir fouiné un peu partout.

Qu'en est-il du dézippage par les commandes linux via le php?
(i.e http://fr3.php.net/manual/fr/function.zip-open.php#56434)
Ces commandes n'utilisent sûrement pas la mémoire allouée au php... Cela semble-t-il possible de dézipper directement avec le linux de l'hébergeur via php?

Arrêtez-moi si je dis des bêtises...

Commentaire de malalam le 20/06/2006 10:21:58 administrateur CS

Hello,

Toover => encore faut-il que ton hébergeur t'autorise à utiliser des exec (), system() et cie, ce dont je doute fort. A moins que ce ne soit un hébergement pro dédié, évidemment.

Commentaire de PaTaTe le 23/06/2006 11:56:13

Si je ne me trompe pas, le code permet de decompresser l'archive en totalité. Pourquoi ne pas l'adapter pour extraire un seul fichier du ZIP (un peu à la maniere CodeS-SourceS quand on est membres Club ?

Commentaire de PaTaTe le 25/06/2006 06:39:34

J'aimerais connaitre la methode pour decompresser un seul fichier moi :s

Commentaire de toover le 25/06/2006 11:04:14

J'aimerais énormément aussi, ça c'est sûr. J'ai bien cherché sur php.net et rien ne montre que c'est possible. Toutes les fonctions zip du php travaillent sur des "ressources zip", c'est à dire qu'il faut obligatoirement lancer zip_open() pour y accéder. Et c'est là le problème parce que zip_open() ne fonctionne pas si le fichier à décompresser est plus gros que la limite d'allocation de mémoire.

Sinon pour décompresser un seul fichier en général je pense que tu peux faire ça:

function extraireFichier($fichier_zip,$a_extraire,$dossier_destination) {

if(file_exists($fichier_zip)) {

if($ressource_zip = zip_open($fichier_zip)) {

while($zip_entry = zip_read($ressource_zip)) {

if (zip_entry_open($ressource_zip, $zip_entry, "r")) {

if($a_extraire == zip_entry_name($zip_entry)) {

$trouve = true;
$data = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$fichier_extrait = "$dossier_destination/$a_extraire";
$stream = fopen($fichier_extrait, "w");
fwrite($stream, $data);
echo'extraction de: '.$a_extraire;
zip_close($ressource_zip);
}
} else echo "pas d'entrée correspondante";
}
} else echo "fichier zip invalide";
} else echo "fichier zip inexistant!";
if(!$trouve) echo "fichier à extraire absent du zip!";
}

Je viens de le faire il peut y avoir des bugs mais je l'ai testé pour un cas et c t opé.

Commentaire de PaTaTe le 25/06/2006 12:35:12

ca marche nikel merci toover !

Je vais essayer d'adapter ca. Je me demande si on peux inclure l'extraction directement dans un force-download sans passer par un fichier sur le serveur ca evite de devoir faire le menage :)

Commentaire de toover le 25/06/2006 12:49:31

Ca devrait être possible, il suffit que ton php retourne $data, qui contient les données décompressées du fichier.
(rajoute "return $data" à la place de tous les trucs qui servent à écrire le fichier)

Mais pour ce qui est des headers php je ne saurais pas trop quoi mettre pour être sûr que ce soit interprété comme il faut.

Commentaire de PaTaTe le 25/06/2006 14:17:14

Pour les header je vais me debrouiller.

Je viens de faire un test et ca passe :)

Commentaire de lesucces le 01/12/2006 17:47:48

Bonjour
J'éssaie votre script ( script de darduck ) sous easyphp 1.8 mais j'ai cette erreure:

Fatal error: Call to undefined function: zip_open() in c:\program files\easyphp1-8\www\maxime\essaie.php on line 9


Merci de me dire où se trouve le problème et comment savoir si mon serveur dont je n'ai accès qu'au php info accepte la fonction zip_open.

Je viens souvent voir cette page en attente d'une réponse

Commentaire de jdeheyn le 23/02/2007 17:19:06

Bonjour,

La source de Darkduck ne semble pas fonctionne en PHP5.
Quelqu'un peut me dire si le code donné par Larr fonctionne avec le version 5 de PHP ?

Commentaire de djmoa le 18/06/2007 02:58:39

petite réaction sur ce qu'a dit "toover le 19/06/2006 21:44:53"

Tu dis que généralement, l'hébergeur limite l'espace mémoire à 16Mo, mais généralement aussi il limite la taille d'envoie de fichiers à 2Mo, donc ca ne devrai te réstreinde que si tu envoie ton zip par FTP...

Sinon pour la limite des 2Mo, j'ai posé une source, il manque encore a faire un programme Java pour le coté client, mais ca semble marcher

Pour la limite des 16Mo, dans la librairie zip.lib.php, il semble que les fichiers sont codés indépendament les uns des autres, donc tu pourrais charger les fichiers un a un au lieu de charger tout le zip. au lieu d'avoir la limite ZIP + Dézipé < 16Mo ca ne s'appliquerai qu'a chaque fichier compressé... ca devrai permetre d'envoyer des zip des plusieurs dizaines au centaines de Mo, mais n'ayant pas de fichier indiciduels jusqu'à 8Mo: photos et courtes videos!!

enfin, il me semble, j'espère que vous aurez au moins compri l'idée plus ou moins :D

Commentaire de max35 le 02/11/2007 17:23:52 9/10

Bonjour,

Ce script fonctionne correctement seulement j'aimerais conserver l'arborescence de mon fichier zip (Répertoires)

Merci de votre aide.

Commentaire de ryu2005 le 04/11/2007 13:54:53

Fatal error: Call to undefined function zip_open() in C:\Program Files\EasyPHP 2.0b1\www\unzip.php on line 11

c'est nulll

Commentaire de max35 le 20/11/2007 15:52:11

ryu2005 ta version de PHP ne prend pas en charge cette fonction. ;)

M@x.

Commentaire de jsfouss le 25/01/2008 12:28:29

J'ai moi aussi le même problème avec mon hébergeur.

Fatal error: Call to undefined function zip_open() in /home/bisouren/public_html/unzip.php on line 11

Commentaire de takali le 17/04/2008 13:36:22

PLUS SIMPLE :

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->extractTo('/mon/dossier/destination/');
    $zip->close();
    echo 'ok';
} else {
    echo 'échec';
}
?>

Commentaire de GREGGRAPH le 13/10/2008 07:50:16

simple et efficace le code de Takali!!!
Merci,

Commentaire de takali le 13/10/2008 07:55:27

Thank's GREGGRAPH

ya pas de quoi :)

A+

 Ajouter un commentaire


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&#233; 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales