Lecture du contenu d'un fichier ZIP par JavaScript

Eléphant du PHP | 80 Messages

27 juin 2008, 14:28

Question toute bête : est-ce qu'il est possible, via JavaScript, d'accéder à du contenu d'un fichier ZIP téléchargé par exemple par AJAX ?

En l'espèce, j'ai une galerie photo ; sur une page, il y a 20 vignettes avec titres. Les pages sont changées via AJAX (car il y a juste les vignettes à changer), ce qui me fait 21 request vers le serveur à chaque fois (un request AJAX retournant les URL des nouvelles vignettes et les titres, plus 20 requests pour chaque nouvelle image), or j'aimerai bien réduire ça à deux requests seulement : le premier toujours pour les titres, le deuxième pour le fichier ZIP contenant les 20 vignettes.

PS. J'ai cherché sur Google ; j'ai trouvé juste les sujets où les personnes demandaient s'il est possible d'extraire (ou au contraire de compresser) un ZIP (et la réponse était non, JS n'ayant pas dans la majorité des cas l'accès au disque dur). Je precise donc que dans mon cas, je n'ai pas l'intention d'enregistrer les fichiers décompressés nulle part.

Mammouth du PHP | 514 Messages

27 juin 2008, 15:00

je pense que la solution est d'extraire le contenu du zip avec php, de renvoyer le contenu au navigateur, et de supprimer les fichiers extraits sur le serveur ensuite.

Je ne crois pas que javascript puisse répondre seul à ce besoin.
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Eléphant du PHP | 80 Messages

27 juin 2008, 15:29

je pense que la solution est d'extraire le contenu du zip avec php, de renvoyer le contenu au navigateur, et de supprimer les fichiers extraits sur le serveur ensuite.
Justement, ce que je veux faire, c'est exactement l'inverse : de zipper les images coté serveur.
Je ne crois pas que javascript puisse répondre seul à ce besoin.
Bon. Dommage. :?

Eléphanteau du PHP | 42 Messages

01 juil. 2008, 07:00

Javascript ne te permettra jamais d'effectuer ce type d'opération (à part sous Internet Explorer, avec un composant activeX, mais là c'est vraiment pas sécurisé du tout).

Tu peux tout de même par javascript, récupérer le contenu d'un fichier ZIP en appelant un script PHP qui renverra les noms de fichiers contenu dans le ZIP sous forme XML (par exemple).

Ensuite, pour chaque photo, tu peux demander a un autre script PHP d'extraire le fichier voulu de l'archive pour le proposer en téléchargement.

Tu devras, de toutes façons passer par du code serveur.
Rien ne sert de courir. En plus tu risques de tomber.

Eléphant du PHP | 80 Messages

01 juil. 2008, 08:38

Tu peux tout de même par javascript, récupérer le contenu d'un fichier ZIP en appelant [...] Tu devras, de toutes façons passer par du code serveur.
Ouai, m'enfin... Là, c'est toujours l'inverse de ce que je voulais faire.
Javascript ne te permettra jamais d'effectuer ce type d'opération (à part sous Internet Explorer, avec un composant activeX, mais là c'est vraiment pas sécurisé du tout).
Oui ; j'ai vu quelque part cette solution. Évidemment, c'est pas satisfaisant du tout.

Bon, je considère donc la chose comme étant impossible à faire (à part de développer son propre application sous JS qui va pouvoir lire et... comprendre le contenu d'un ZIP :-k )

Mammouth du PHP | 514 Messages

01 juil. 2008, 08:47

Reste la solution de flash, qui doit te permettre ce genre d'opérations.
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Eléphant du PHP | 80 Messages

01 juil. 2008, 12:17

Ou Silverlight. :wink:
Oui, c'est vrai. J'y ai pas du tout pensé. Merci.