Dans une page en php, je crée un fichier zip.
Je voudrai que le dl du fichier se lance automatiquement à la fin.
J'ai tenté un document.location.href = monfichier.zip
Mais ça m'efface toute la page or je voudrai que le texte reste au
lancement du téléchargement comme sur cette page :
http://www.easyphp.org/telechargements/dn.php?F=easyphp2-0b1
(parce que j'ai mes messages d'erreur notamment qui s'affichent)
Donc je me tourne vers les meta refresh
Pb : je crée mon fichier à télécharger dans la page donc je peux pas
donner un time-end sûr pour le départ du téléchargement.
Du coup je me suis tourné vers le DOM et j'essaie de mettre ma balise en
fin de page avec
echo "<script type=\"text/javascript\">" ;
echo " var Noeud = document.createElement('meta') ; \n" ;
echo " var Parent = document.getElementsByTagName('head').item(0); ";
echo " Noeud.setAttribute('HTTP-EQUIV', 'Refresh') ; \n" ;
echo " Noeud.setAttribute('Content','2;url=./export/$dossier.zip');";
echo " Parent.appendChild(Noeud); \n" ;
echo "</script> \n" ;
Mon nouveau noeud apparaît bien dans l'inspecteur DOM mais que nenni
pour le refresh :(
Des avis ? des suggestions ?
Nico
Réflexion complémentaire :
En fait question de base avant tout ça :
Le refresh d'une page se lance à la lecture du refresh ou à la fin de la
lecture de la page (cad balise html fermante)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thomas Harding
Le 11-08-2007, Nico a écrit:
Dans une page en php, je crée un fichier zip. Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage, puis que tu fasses appel à la fonction "headers" de php, en fixant pour le header type "application/octet-stream".
Après les fonctions headers, tu fait un echo ou print ou fpassthru de ton fichier zip (ou de la variable qui le contient), et enfin tu quittes immédiatement avant le reste de la page.
Evidemment, au tout début, tu auras testé une variable de la requête pour choisir entre traitement+upload ou affichage de la page.
Pour les détails, je te laisses le loisir de poser la question dans fr.comp.lang.php :)
HTH, -- Thomas Harding
Le 11-08-2007, Nico <nicolasPOINpoulain@ouvaton.org> a écrit:
Dans une page en php, je crée un fichier zip.
Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage,
puis que tu fasses appel à la fonction "headers" de php, en fixant pour
le header type "application/octet-stream".
Après les fonctions headers, tu fait un echo ou print ou fpassthru de
ton fichier zip (ou de la variable qui le contient), et enfin tu quittes
immédiatement avant le reste de la page.
Evidemment, au tout début, tu auras testé une variable de la requête
pour choisir entre traitement+upload ou affichage de la page.
Pour les détails, je te laisses le loisir de poser la question dans
fr.comp.lang.php :)
Dans une page en php, je crée un fichier zip. Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage, puis que tu fasses appel à la fonction "headers" de php, en fixant pour le header type "application/octet-stream".
Après les fonctions headers, tu fait un echo ou print ou fpassthru de ton fichier zip (ou de la variable qui le contient), et enfin tu quittes immédiatement avant le reste de la page.
Evidemment, au tout début, tu auras testé une variable de la requête pour choisir entre traitement+upload ou affichage de la page.
Pour les détails, je te laisses le loisir de poser la question dans fr.comp.lang.php :)
HTH, -- Thomas Harding
Pierre Goiffon
Thomas Harding wrote:
Dans une page en php, je crée un fichier zip. Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage, puis que tu fasses appel à la fonction "headers" de php, en fixant pour le header type "application/octet-stream".
Je suis très peu partisan de cette solution ! Nous en parlons régulièrement ici... Jouer avec le content-type Mime est une très mauvaise chose ! Et on peut arriver à un résultat identique en utilisant l'entête content-disposition. Voir cette fiche de la kb pour un exemple : http://support.microsoft.com/?id&0519
Au final, bien se souvenir que comme toujours en Web on ne fait que proposer : le résultat final dépendra du bon vouloir de l'utilisateur (ou de son administrateur)
Thomas Harding wrote:
Dans une page en php, je crée un fichier zip.
Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage,
puis que tu fasses appel à la fonction "headers" de php, en fixant pour
le header type "application/octet-stream".
Je suis très peu partisan de cette solution ! Nous en parlons
régulièrement ici... Jouer avec le content-type Mime est une très
mauvaise chose ! Et on peut arriver à un résultat identique en utilisant
l'entête content-disposition. Voir cette fiche de la kb pour un exemple :
http://support.microsoft.com/?id&0519
Au final, bien se souvenir que comme toujours en Web on ne fait que
proposer : le résultat final dépendra du bon vouloir de l'utilisateur
(ou de son administrateur)
Dans une page en php, je crée un fichier zip. Je voudrai que le dl du fichier se lance automatiquement à la fin.
Il faut que tu fasses le traitement du fichier zip avant tout affichage, puis que tu fasses appel à la fonction "headers" de php, en fixant pour le header type "application/octet-stream".
Je suis très peu partisan de cette solution ! Nous en parlons régulièrement ici... Jouer avec le content-type Mime est une très mauvaise chose ! Et on peut arriver à un résultat identique en utilisant l'entête content-disposition. Voir cette fiche de la kb pour un exemple : http://support.microsoft.com/?id&0519
Au final, bien se souvenir que comme toujours en Web on ne fait que proposer : le résultat final dépendra du bon vouloir de l'utilisateur (ou de son administrateur)