Recharger page automatiquement après le téléchargement d'un fichier

Recharger page automatiquement après le téléchargement d'un fichier - PHP - Programmation

Marsh Posté le 20-04-2006 à 13:41:02    

Hello.
Lors d'un submit, un formulaire HTML me retourne un fichier .txt. J'ai modifié les headers pour qu'un popup me demande où je veux enregistrer le fichier.
Une fois que ce popup est apparu, j'aimerai que la page web se refresh sur la page d'accueil mais je sais pas comment faire puisque j'ai déjà envoyé les headers pour récupéré le fichier.
 
Je pense à faire un timer javascript après le clique sur le bouton submit qui me reload la page 5 sec après le clic. C'est faisable de faire ça en javascript ? (jamais fais de ma vie du JS).  
 
Merci pour vos avis :jap:  :hello:

Reply

Marsh Posté le 20-04-2006 à 13:41:02   

Reply

Marsh Posté le 20-04-2006 à 13:48:50    

Ca ne parait pas super faisable, puisque tu as modifié le header...[:jean-guitou]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-04-2006 à 16:52:56    

Pour faire en javascript :
 
Tu rajoutes dans ta page un truc du style :
 

Code :
  1. <script type="text/javascript">
  2. function maj() {
  3.   setTimeout( "refresh()", 5000 );
  4. }
  5. function refresh() {
  6.    document.location.reload()
  7. }
  8. </script>


 
Et dans la balise de ton form contenant le submit tu mets :

Code :
  1. onsubmit="maj();"


 
@+

Reply

Marsh Posté le 20-04-2006 à 16:56:49    

r3pt1l3 a écrit :

Pour faire en javascript :
 
Tu rajoutes dans ta page un truc du style :
 

Code :
  1. <script type="text/javascript">
  2. function maj() {
  3.   setTimeout( "refresh()", 5000 );
  4. }
  5. function refresh() {
  6.    document.location.reload()
  7. }
  8. </script>


 
Et dans la balise de ton form contenant le submit tu mets :

Code :
  1. onsubmit="maj();"


 
@+


 
Ici on ne livre pas du code de merde, alors merci d'éviter de C/C du code de merde qui ne fonctionnera pas forcément :jap:

Reply

Marsh Posté le 20-04-2006 à 16:59:01    

gatsu35 a écrit :

Ici on ne livre pas du code de merde, alors merci d'éviter de C/C du code de merde qui ne fonctionnera pas forcément :jap:

 :lol:  :lol:  

Reply

Marsh Posté le 20-04-2006 à 17:02:32    

Il a demander un bout de code javascript sur le submit, je lui donne ce qu'il demande, merde ou pas.
Donc evite de l'ouvrir pour rien dire :)

Reply

Marsh Posté le 20-04-2006 à 17:23:11    

r3pt1l3 a écrit :

Il a demander un bout de code javascript sur le submit, je lui donne ce qu'il demande, merde ou pas.
Donc evite de l'ouvrir pour rien dire :)


Tout bien réfléchis c'est la meilleure méthode puisque c'est ce qu'il voulait  :jap:

Reply

Marsh Posté le 20-04-2006 à 17:29:07    

Sans rancune ;)
Désolé de ma ptite aggressivité au passage ;)

Reply

Marsh Posté le 20-04-2006 à 21:01:35    

> onsubmit="maj();"
- hum, que doit faire le navigateur: deviner que tu veux envoyer le formulaire?
- onsubmit="javascript:maj();return true;"
 

Code :
  1. <script type="text/javascript">
  2. function maj() {
  3.   setTimeout( "refresh()", 5000 );
  4. }
  5. function refresh() {
  6.   document.location.reload()
  7. }
  8. </script>


Ça ne fonctionne pas du tout: quand tu appuye sur submit le script disparaît, ainsi que tous les timers.
 
Par contre ça c'est ok, à mettre dans la page où le header a été modifié:

Code :
  1. <html>
  2. <head>
  3. <!-- retour accueil au bout de 5 secondes pour l'internaute sans javascript -->
  4. <meta http-equiv="refresh" content="5;/">
  5. </head>
  6. <!-- retour accueil -->
  7. <body onload="javascript:window.location='/';">
  8. <a href="/">Retour accueil</a>
  9. </body>
  10. </html>

Message cité 1 fois
Message édité par nargy le 20-04-2006 à 21:03:15
Reply

Marsh Posté le 20-04-2006 à 21:04:06    

nargy a écrit :


Par contre ça c'est ok, à mettre dans la page où le header a été modifié:

Code :
  1. <html>
  2. <head>
  3. <!-- retour acceuil au bout de 5 secondes pour l'internaute sans javascript -->
  4. <meta http-equiv="refresh" content="5;/">
  5. </head>
  6. <!-- retour acceuil -->
  7. <body onload="javascript:window.location='/';">
  8. ...



 
Euh là pas sûr...pace-que si ton navigateur télecharge ta page au lieu de l'afficher il risque d'en avoir rien à foutre, de ton javascript, non?[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-04-2006 à 21:04:06   

Reply

Marsh Posté le 20-04-2006 à 21:42:55    

heu ouais je me suis emporté, faut voir comment le header a été modifié..? ou le mettre dans une page à part.

Reply

Marsh Posté le 21-04-2006 à 08:49:21    

je me suis posé toute ces questions aussi et c'est pour ça que je suis venu poser une question car je ne voyais pas comment m'en sortir. Je vois que c'est pas trivial, je vais encore essayer 2-3 trucs et je vous mettrai mes conclusions ici, on sait jamais ça pourrait être utile à qqn.

Reply

Marsh Posté le 21-04-2006 à 09:01:49    

J'ai essayé hier avec un content-type: multipart/mixed.
Ça marche nickel avec FF: il m'affiche une page et me télécharge un fichier en même temps.

Reply

Marsh Posté le 21-04-2006 à 09:10:51    

Exemple, une page qui propose de tagguer une image jpeg et renvoie le résultat:

Code :
  1. <?
  2. $ok=isset($_POST['envoyer']);
  3. if($ok)
  4. { // multipart
  5.   $boundary="MimeBoundary".md5(rand()).md5(rand());
  6.   header("Content-type: multipart/mixed; boundary=\"$boundary\"" );
  7.   // récupérer fichier
  8.   $fichier     = $_FILES['fichier']['name'];
  9.   $nom_fichier = $_FILES['fichier']['tmp_name'];
  10.   $nom_destination = './photo/'.$fichier;
  11.   $nom_destination=$nom_fichier;
  12.   // récupérer commentaire
  13.   if (!$_POST['commentaire'])
  14.     $_POST['commentaire']=$fichier;
  15.   // tagguer image
  16.   $img=imagecreatefromjpeg($nom_destination);
  17.   if(!$img)
  18.   $black = imagecolorallocate($img, 0, 0, 0);
  19.   imagestring($img, 5, 0, 0, stripslashes($_POST['commentaire']), $black);
  20.   imagejpeg($img, $nom_destination);
  21.   imagedestroy($img);
  22.   // envoyer image
  23.   echo "--$boundary\n";
  24.   echo "Content-disposition: attachment; filename=$fichier\n";
  25.   echo "Content-type: ".$_FILES['fichier']['type']."\n";
  26.   echo "\n";
  27.   readfile($nom_destination);
  28.   // envoyer page
  29.   echo "--$boundary\n";
  30.   echo "Content-type: text/html\n";
  31.   echo "\n";
  32. }
  33. ?>
  34. <html>
  35. <body>
  36. <form action="test0.php" method="POST" enctype="multipart/form-data">
  37. Choisir un fichier JPEG:<br>
  38. <input type="file" name="fichier" size="40"><br>
  39. Commentaire à ajouter:<br>
  40. <input type="text" name="commentaire" size="40"><br>
  41. <input type="submit" name="envoyer" value="Tagguer l'image">
  42. </form>
  43. </body>
  44. </html>
  45. <?
  46. // fin multipart
  47. if($ok) echo "--$boundary--\n";
  48. ?>


Message édité par nargy le 21-04-2006 à 09:11:36
Reply

Marsh Posté le 21-04-2006 à 09:21:51    

hum opera et konqueror affichent juste l'image tagguée

Reply

Marsh Posté le 21-04-2006 à 09:26:57    

Sinon tu peux toujours tricher en mettant le target de ton form dans une (i)frame invisible et sur le submit mettre un timer comme le disait r3pt1l3 ( yeaaah H4cK3r StAïLL3).

Reply

Marsh Posté le 21-04-2006 à 10:14:18    

nargy : J'ai pas encore testé ta proposition mais dans mon cas, je dois télécharger un fichier txt et afficher non pas ce fichier mais la page principale de l'application.

Reply

Marsh Posté le 21-04-2006 à 10:34:58    

[mode HS]
 

anapajari a écrit :

r3pt1l3 ( yeaaah H4cK3r StAïLL3).


 
oui mon vrai pseudo était deja pris et j'etais encore jeune et con a l'époque ^^
 
[/mode HS]


Message édité par r3pt1l3 le 21-04-2006 à 10:35:10

---------------
http://www.net-pratique.fr
Reply

Marsh Posté le 21-04-2006 à 10:35:41    

ouais ouais, reprends la solution de raptor, avec juste:

Code :
  1. onsubmit="maj();return true;"


 
Le multipart c'était pour tester, ça fonctionne à peu près mais tous les navigateurs ne le supportent pas pleinement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed