[javascript] Uploader un fichier en javascript

Uploader un fichier en javascript [javascript] - HTML/CSS - Programmation

Marsh Posté le 26-05-2006 à 18:39:15    

Salut !
 
J'essaie de faire evoluer un site perso.  
Pour ce faire, je tente de lui appliquer AJAX.  
Bon, rien de bien revolutionnaire, mais je bute sur un probleme.  
J'ai des formulaires pour uploader des fichiers  
et je n'arrive pas à m'en sortir avce le javascript.  
Si vous avez une idee, n'hesitez pas.
 
Voici le script Javascript qui me permet de faire de l'AJAX:

Code :
  1. </script>
  2. function submitPost2Form(ID, LINK, DATA)
  3. {
  4.  var http = null;
  5.  if(window.XMLHttpRequest)
  6.   http = new XMLHttpRequest();
  7.  else if (window.ActiveXObject)
  8.   http  = new ActiveXObject(Microsoft.XMLHTTP);
  9.                    
  10.  http.onreadystatechange = function()
  11.  {
  12.   if(http.readyState == 4)
  13.   {
  14.    if(http.status == 200)
  15.    {
  16.                                         document.getElementById(ID).innerHTML = http.responseText;
  17.                                         document.getElementById("erreur" ).innerHTML = "";
  18.                                 }
  19.    else if(http.status == 304)/* "No changes" */
  20.    {
  21.                                         /* Pas d'alerte sur cette erreur frequente */
  22.    }
  23.    else
  24.    {
  25.     document.getElementById("erreur" ).innerHTML = "Error: returned status code " + http.status + " (" + http.statusText + " )";
  26.                                         //alert("Error: returned status code " + http.status + " " + http.statusText);
  27.    }
  28.   }
  29.  };
  30.  document.getElementById("debug" ).innerHTML = "<br/>ID = " + ID
  31.    + "<br/>LINK = " + LINK
  32.    + "<br/>DATA = " + DATA + "<br/>";
  33.  http.open( "POST", LINK, true);
  34. //  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded" );  
  35.  http.setRequestHeader("Content-Type", "multipart/form-data" );
  36.  http.send(DATA);
  37. }
  38. </script>


 
 
Voici le code HTML qui ne fonctionne pas: :'(

Code :
  1. <form name=form2 method=post action="javascript:submitPost2Form('page_principale', 'test_formulaire_mixte.php', 'commentaire=' + document.form2.commentaire.value + '&MAX_FILE_SIZE=' + document.form2.MAX_FILE_SIZE.value  + '&fichier=' + document.form2.fichier.value )">
  2. <!-- <form name=form2 method=post action="javascript:write_div('page_principale', 'test_formulaire_mixte.php'+ 'commentaire=' + document.form2.commentaire.value + '&MAX_FILE_SIZE=' + document.form2.MAX_FILE_SIZE.value  + '&fichier=' + document.form2.fichier.value )">-->
  3.  <textarea name="commentaire" rows="8" cols="25" maxlength="200">Commentez la partie (200 caracteres max.).</textarea>
  4.  Fichier replay (300ko max) : <input type="hidden" name="MAX_FILE_SIZE" value="5000000"><input type="file" name="fichier" size="40"><br/>
  5.  <br><input type="submit" value="d&eacute;poser le replay">
  6. </form>


 
Merci d'avance.


Message édité par leguims le 26-05-2006 à 22:17:26
Reply

Marsh Posté le 26-05-2006 à 18:39:15   

Reply

Marsh Posté le 01-06-2006 à 23:16:30    

Moi qui croyais que ce forum etait fréquenté par des caïds ... me voila bien decu. Merci tout de meme aux 33 personnes qui sont venu lire ma question.
 
++G.

Reply

Marsh Posté le 01-06-2006 à 23:35:38    

Ba c'est sur que si tu réagi comme ca, on a pas envie de t'aider!
 
De plus, tu nous dit que tu n'arrive pas a t'en sortir, mais tu nous dit pas l'erreur!!! On n'est pas des dieu, n'y des caïds, seulement des être humains qui répondent quand il on réponse à la question et qu'il on le temps....

Reply

Marsh Posté le 02-06-2006 à 00:34:36    

C'est la deception qui me fait reagir comme ca. En fait, quand je clique sur le bouton (submit), il ne se passe rien. :(
 
En effet, le probleme posé n'est pas trivial pour moi, mais je me disais que c'etait un classique pour les gros utilisateurs.
 
C'est marrant d'avoir une reaction quand on fait de la provoc. Merci de ton attention.
 
++G.

Reply

Marsh Posté le 02-06-2006 à 00:54:27    

J'suis pas un spécialiste de l'AJAX, mais ds le peu que j'ai fait; ma fonction équivalent a submitPost2Form ne prend que 2 arguments chez moi (la page appelé et l'id du conteneur qui recoit la réponse).
 
Sinon, regarde les erreurs javascript y'en a surement (en bas a gauche pour IE, ds outil / console javascript pr FF).
Ds la mesure du possible utilise celle de FF qui ets plus précise.

Reply

Marsh Posté le 02-06-2006 à 01:00:19    

MErci pour le tuyeau de IE et FF. J'utilise Opera, alors peut-etre qu'il n'est pas bavard. A voir.
 
Sinon, j'ai 3 argument car j'utilise la methode POST pour envoyer les donnees. Je dois donc separer l'URL des arguments. LEs donnees sont envoyees dans le corps de la requete HTTP. Enfin, c'est ce que je crois.
 
Enfin, je vais voir si FF ou IE sont plus bavard, ca fera avancer le schmilblock.
 
Merci encore.

Reply

Marsh Posté le 02-06-2006 à 02:37:34    

J'ai quand même un doute sur le fait qu'un appel à du js dans le action du formulaire fonctionne...
J'aurais plutôt choisi le bouton avec un onclick="[js]".
non?

Reply

Marsh Posté le 02-06-2006 à 07:48:44    

exact, c pas ds action qui fo le metre!
 
ds onSubmit!

Reply

Marsh Posté le 02-06-2006 à 09:15:45    

tu peux pas "envoyer" un fichier via xmlHttpRequest, tu es obligé de te servir d'un vrai formulaire 'post'é ou 'get'é.
Maintenant tu peux faire autrement et obtenir en gros le même effet
 
Note:dans ta balise form il manque le enctype="multipart/form-data"  

Reply

Marsh Posté le 03-06-2006 à 12:13:44    

anapajari a écrit :

tu peux pas "envoyer" un fichier via xmlHttpRequest, tu es obligé de te servir d'un vrai formulaire 'post'é ou 'get'é.
Maintenant tu peux faire autrement et obtenir en gros le même effet
 
Note:dans ta balise form il manque le enctype="multipart/form-data"


J'aimerai bien savoir faire autrement si c'est pas trop compliqué.
 
La caracteristique enctype="multipart/form-data", je l'avais mise dans la commande "submitPost2Form", à la fin : (http.setRequestHeader("Content-Type", "multipart/form-data" );
 
Merci de votre aide.

Reply

Sujets relatifs:

Leave a Replay

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