fonction Zip ok, par contre, le zip "retient" l'arborecence [php] - PHP - Programmation
Marsh Posté le 05-06-2009 à 14:27:09
J'ai jamais utilisé la fonction zip mais en rentrant ce soir je me pencherais bien sur ton problème si entre temps tu n'as pas trouvé.
A vu de nez il faut tenter le chemin absolu. Pour t'aider tu peux utiliser $_SERVER['DOCUMENT_ROOT'].
Marsh Posté le 05-06-2009 à 14:29:34
Peux-tu donner un exemple de ce que tu veux faire, de ce qui se passe, et des explications plus détaillées ? Tu veux que ton archive ne contienne qu'un seul "répertoire" (la racine) avec tous les fichiers de l'arborescence d'origine ?
Marsh Posté le 07-06-2009 à 13:18:20
Alors :
Je cherche à zipper le contenu d'un répertoire, tout "bêtement".
J'ai un répertoire, quelques fichiers dedans, je voudrais juste en faire un zip (je le mail après ce zip, et c'est bien plus facile pour moi d'envoyer un zip que x fichiers, mais le problème n'est pas là).
Et je ne comprends pas pourquoi la fonction zip me crée une arborescence entre l'endroit où je lance le script et le lieu où est mon dossier à zipper :s
berceker united > si j'indique le lieu où est mon répertoire par un chemin absolu, le zip concerve l'arborescence complete (c:\-->\monrepertoire)
Marsh Posté le 07-06-2009 à 16:30:59
Bah peut-être parce que tu utilises un code que tu ne comprends pas et qui explicitement fait ce que tu ne veux pas qu'il fasse ?
D'où vient le $i de la ligne 24 de ton premier code ? A quoi sert-il ?
La méthode addFile (ligne 92, deuxième code) reçoit en paramètre le nom du fichier à ajouter dans l'archive. C'est un nom "purement informatif". Ce nom ne sert à rien, si ce n'est à pouvoir identifier le fichier dans l'archive.
Si tu veux n'avoir qu'une partie de l'arborescence dans le nom du fichier, tu dois modifier explicitement ton appel en ligne 27 de ton premier code. Remplacer $path."/".$file par ce que tu souhaites (sans doute un suffixe de $path plus "/".$file).
Marsh Posté le 07-06-2009 à 18:34:23
en effet, je recherchais une fonction de zippage de répertoire, apres avoir pas mal pataugé, j'ai trouvé ca qui semblait fonctionner, j'ai pris.
Disons que je commençais un peu à saturer de mes deux jours de prog php à patauger sur un envoie de mail, des uploads, et je saturais un peu à lire ce code, les I/O sur un langage sont jamais trivials je trouve, apres à tete reposé, je vais essayer de mieux comprendre.
je vais regarder tes suggestions / interrogations
Marsh Posté le 08-06-2009 à 11:12:42
En effet à tête reposée, c'est plus "évident", et en m'inspirant de ton commentaire :
$zip->addFile(file_get_contents($path."/".$file),$path."/".$file);
devient
$zip->addFile(file_get_contents($path."/".$file),$file);
Je perds une gestion éventuelle de sous-répertoires, mais dans mon cas c'est impossible, ce ne sont que des fichiers sans arborescence.
Merci
Marsh Posté le 08-06-2009 à 12:38:39
Tu peux conserver la gestion des sous-répertoires, il te suffit de ne garder que la partie qui t'intéresse dans $path plutôt que de tout supprimer.
Marsh Posté le 08-06-2009 à 13:49:12
heu, je en suis pas sur en fait (et ca reste un peu enigmatique dans mon esprit) : $path, c'est le chemin d'acces à mon répertoire à zipper. Ce chemin ne m'intéresse jamais dans mon zip. A mon avis ca se joue dans l'appel recursif. Je pense que si je veux garder l'arborescence du contenu de ce que zip, il me faudrait un troisieme parametre, genre :
1-->chemin du rep à zipper, qui restera fixe, meme dans un appel recursssif
2-->chemin depuis de rep à zipper,
3--> fichier/dossier courant.
Bon dans mon cas, je ne me creuse pas, j'ai juste à zipper des fichiers depuis un rep, donc je laisse mon code comme ca, "dépouillé" de gestion de sous répertoire.
Marsh Posté le 04-06-2009 à 17:59:09
Bon, désolé pour le titre plus que vaseux, mais pas simple d'expliquer mon soucis :
J'utilise une fonction pour zipper un répertoire (je poste le code plus bas à la fin de ce post), le zip se fait, ca c'est ok.
Par contre, quand on ouvre le zip, on a toute l'arborescence du systeme jusqu'à l'endroit où sont les fichiers. C'est "moche"
J'ai indiqué au script des chemin relatifs pour localiser les fichiers, et rebellote, le meme principe, mais relativement à l'endroit d'où j'execute ce script.
Edit (en plus du reste) : vous remarquerez le répertoire vide avant d'acceder au fichiers
Voici une copie d'écran exemple :
Le code de ma fonction de zippage de répertoire
code de la libraire zip.lib
Si vous avez une idée
Message édité par tuxbleu le 04-06-2009 à 18:01:22