[PHP] fichier ZIP recuperer et decompresser

Fermé
bedomon Messages postés 8 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 5 décembre 2005 - 25 mai 2005 à 13:50
canfly Messages postés 14 Date d'inscription dimanche 31 mars 2013 Statut Membre Dernière intervention 1 avril 2013 - 31 mars 2013 à 20:19
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

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
Je vous remercie bcp bcp pour cet haut épris ..
0
Merci Bcpp
0
Merci beaucoup pour ce script ^
0
canfly Messages postés 14 Date d'inscription dimanche 31 mars 2013 Statut Membre Dernière intervention 1 avril 2013 279
31 mars 2013 à 20:19
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