Zipper à la volée avec PHP

Résolu/Fermé
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 12 déc. 2015 à 19:51
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 13 déc. 2015 à 20:39
Bonsoir,

Je dispose d'un hébergement privé sous GNU Debian/Linux avec la commande zip disponible.

Certaines fonctions PHP permettent l'exécution de programmes externes : exec(), system(), passthru() (j'envisage d'utiliser la commande zip).

Mon problème est que je ne prévois pas de zipper des fichiers existants mais de zipper plusieurs fichiers produits à la volée et je ne sais pas comment faire.

Pour être plus clair, un même script PHP produirait (par exemple) :
- 20 lignes (destinées à former un fichier texte avec un nom: nom1.xml),
- puis 50 lignes (formant le fichier nom2.xml)
- puis 30 lignes formant le fichier nom3.txt)
et le tout devrait produire un fichier zip ainsi organisé :

Archive:  fichier.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     1324  2015-12-12 19:05   xml/nom1.xml
    21289  2015-12-12 19:05   xml/nom2.xml
     8642  2015-12-12 19:05   txt/nom3.txt
---------                     -------
    31255                     3 files


et proposer ensuite le tout en téléchargement avec la fonction :
header("location: fichier.zip");


Quelqu'un a-t-il une piste ou une solution ? Merci d'avance.


A voir également:

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
13 déc. 2015 à 17:29
Bonjour, si tu a accès aux fonctions zip, tu peut en faire ce que tu veut.

Tu peut faire autant de addFromString que tu souhaite, et mettre des sous-dossier en même temps si besoin.

Si besoin, Tout est décrit ici : https://www.php.net/manual/fr/book.zip.php
2
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
13 déc. 2015 à 20:19
Je n'ai pas encore eu le temps d'expérimenter mais j'ai effectivement l'impression que la solution à mon problème est là et je ne crois pas m'avancer trop vite en marquant la question comme résolue.

Merci beaucoup pour ta réponse qui donne dans le mille. Bonne suite à toi. A+
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
13 déc. 2015 à 20:39
:-)
Pas pu m'empêcher de revenir après essai pour donner le résultat.
C'est tout simplement génial.
Encore merci
0