dom, javascript et refresh

Le
Nico
Salut

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êsyphp2-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') ; " ;
echo " var Parent = document.getElementsByTagName('head').item(0); ";
echo " Noeud.setAttribute('HTTP-EQUIV', 'Refresh') ; " ;
echo " Noeud.setAttribute('Content','2;url=./export/$dossier.zip');";
echo " Parent.appendChild(Noeud); " ;
echo "</script> " ;

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)
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thomas Harding
Le #22092721
Le 11-08-2007, Nico
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
Le #22092651
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)
Publicité
Poster une réponse
Anonyme