Visualiser le contenu d'un fichier *.zip

Soyez le premier à donner votre avis sur cette source.

Vue 6 903 fois - Téléchargée 503 fois

Description

zip_open, zip_read, zip_entry_name, zip_entry_filesize, zip_entry_compressedsize, ratio, zip_entry_compressionmethod, zip_is_file, zip_close, function_exists, $_FILES, php_zip.dll

Ca affiche juste le contenu d'un ZIP posté via un formulaire. Pour créer un vrai fichier ZIP, le mieux est d'utiliser la librairie ZLIB et le code http://www.phpcs.com/code.aspx?id=13282

Remarque:
Avec la librairie Zip (que vous devez activer dans PHP.INI pour que le code fonctionne), pour ouvrir un fichier précis sur un serveur, vous devez fournir le chemin COMPLET ! Vous avez alors:
$Zip=zip_open($_SERVER['DOCUMENT_ROOT'].'/DossierWeb/Fichier.zip');

Programme testé avec:
Apache 1.3.27
PHP 4.3.3

Source / Exemple :


<html>
  <title>Afficher le contenu d'un ZIP</title>
<body>
  <?php
    if (!function_exists('zip_open')) {
      echo '<font size=8><b>La librairie ZIP n\'est pas<br>active sur le serveur</b></font>';
      echo '<br>&nbsp;<br>Modifier "<code>PHP.INI
" pour pouvoir continuer...</body></html>';
return 0;
}

function zip_is_dir($Value) {
if (strlen($Value)==0)
return false;
else
return ($Value=='.') || ($Value=='..') || ($Value[strlen($Value)-1]=='/');
}

if (!isset($_FILES['fnFichier'])) {
?>

<form name="frmZipView" action="zip.php" method="post" ENCTYPE="multipart/form-data">
Choisir le fichier
<br><input type="file" name="fnFichier">
<br><input type="submit" name="butSend" value="Voir contenu">
</form>

<?php
} else {
$Fln = $_FILES['fnFichier'];
if ($Zip = zip_open($Fln['tmp_name'])) {
echo '<font size=+3><b>'.strtoupper($Fln['name']).'</b></font>';
echo '<font face="Courier New">';
echo '<table border=1 width="60%">';
while ($dat=zip_read($Zip)) {
$ZFic = zip_entry_name($dat);
echo '<tr>';
if (zip_is_dir($ZFic))
echo '<td bgcolor="#D0D0D0" colspan=2><img src="_dir.gif" align=absmiddle> <font face="Courier New"><b>'.$ZFic.'</b></font></td>';
else {
$ExpSize = zip_entry_filesize($dat);
$CompSize = zip_entry_compressedsize($dat);
$Ratio = round(100*100*$CompSize/$ExpSize)/100;
$CmpMethod = zip_entry_compressionmethod($dat);

echo '<td><img src="_file.gif" align=absmiddle> '.$ZFic.'</td>';
echo '<td><font size=2>'.$ExpSize.' octets réels'.
'<br>'.$CompSize.' octets archivés'.
'<br>Ratio = '.$Ratio.'%'.
'<br><i>'.$CmpMethod.'</i></font></td>';
}
echo '</tr>';
}
zip_close($Zip);
echo '</table>';
echo '</font>';
}
}
?>
</body>
</html>
</code>

Conclusion :


Vous pouvez toujours aller visiter http://altert.family.free.fr/

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
79
Date d'inscription
mardi 28 novembre 2006
Statut
Membre
Dernière intervention
28 juin 2008

meme si je repond 2 ans apres le post de cette source: merci pour ta source :)

10/10
Messages postés
3
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
9 octobre 2006

coucou,
bon je vois qu'il n'y a pas eu de post depuis février mais je tente ma chance...

je suis dans le meme cas que Karoudoudou, et en poussant mais recherche je pense avoir trouvé une piste interressante mais non résolue, je compte sur votre aide :o)

en fait cela proviendrait du chemin du fichier zip dans la fonction zip_open,
elle fonctionne très bien lorsqu'on lui passe le chemin complet pour acceder au fichier zip(c:/aa/test.zip), mais dès lors qu'on met un chemin relatif (/zip/test.zip), là ça merde :o(

a+
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
16
En chipotant, je répondrai que j'utilise PHP 4.3.3 et non 4.3.11 ou même 4.3.10. Mon fichier "php_zip.dll" fait 40960 octets (EasyPHP17). Je ne peux rien dire de plus à part que chez moi, c'est 100% fonctionnel.
Messages postés
1
Date d'inscription
vendredi 6 janvier 2006
Statut
Membre
Dernière intervention
9 janvier 2006

Coucou,

J'ai activé l'extension zip ds le php.ini comme tu l'avais indiqué, relancé apache et tout(Je suis sous apache 1.3.33 et php 4.3.11) mais il me met toujours call undefinde function quand j'essaye d'utiliser zip_open. help!!!!!!!
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
16
zip_is_dir() est une fonction implémentée dans le code source PHP ici présent. Elle est indépendante de la librairie ZIP. Elle fait juste du plagiat au niveau du nom.

function zip_is_dir($Value) {
if (strlen($Value)==0)
return false;
else
return ($Value=='.') || ($Value=='..') || ($Value[strlen($Value)-1]=='/');
}
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.