[PHP] fichier ZIP recuperer et decompresser

bedomon Messages postés 8 Statut Membre -  
canfly Messages postés 14 Statut Membre -
J'ai un code en php pour decompresser un fichier zip il arrive a me le dezzipper malgré des erreurs dans le code et je voudrais l'ameliorer pour definir le repertoire de destination mais ca ne fonctionne pas. Si quelqu'un pouvait m'aider ou possede un script qui marche ?.????

Merci
A voir également:

2 réponses

summd5
 
voici un code source pour decompresser un fichier zip
<?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('util.zip','util/');

echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';

foreach ($liste as $nom_fichier)
{
echo $nom_fichier.'<br />';
}

?>
7
HADJADJ
 
Je vous remercie bcp bcp pour cet haut épris ..
0
virmak
 
Merci Bcpp
0
benenutz
 
Merci beaucoup pour ce script ^
0
canfly Messages postés 14 Statut Membre 279
 
C'est possible avec la fonction zip_open, tout est expliqué dans ce tutoriel :
http://www.finalclap.com/faq/62-php-extraire-zip

Pour que ça marche il faut activer l'extension php_zip.
7