Envoi de fichiers via XMLHttpRequest

Résolu
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014 - 21 mai 2008 à 09:51
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014 - 21 mai 2008 à 11:51
Bonjour à tous.

Je cherche (désespérement) si il est possible d'envoyer des fichiers sélectionnés dans un

9 réponses

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
21 mai 2008 à 11:00
Salut,

Il n'est à ce jour pas possible d'envoyer des fichiers par XMLHttpRequest. Je crois qu'il existe un hack pour y arriver mais comme tout hack, c'est à prendre avec des pincettes.
Diriges toi vers une méthode plus "classique".

A+
3
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014
21 mai 2008 à 09:56
Probleme... Je reposte

Je cherche (désespérement) si il est possible d'envoyer des fichiers sélectionnés dans un <input type='file'... avec XMLHttpRequest.


J'ai fais une fonction qui marche très bien lorsqu'il s'agit de n'envoyer que des champs <input type='text'... ou ce genre de trucs.
En revanche pour les fichiers ça passe pas.


Voici la fonction au cas ou :


function ajouter (frm) {
 .....
 act_cat ("actions", "msg", "&src=aj_cat&nom_cat=" + frm.cat_1.value + "&vign_cat=" + frm.cat_vign.value, true);
}
// "actions" est la page à laquelle on envoie le formulaire
//cat_vign est mon champs FILE


function act_cat (page, cible, val, recharge) {
 var xhr;
 if (window.XMLHttpRequest) xhr = new XMLHttpRequest ();
 else if (window.ActiveXObject) xhr = new ActiveXObject ('Microsoft.XMLHTTP');
 else {
  alert ("Votre navigateur ne gère pas l'objet XMLHttpRequest.\n");
 }
 var page = 'pages/' + page + '.php';
 xhr.open ('POST', page, true);
 xhr.setRequestHeader ('Content-Type','application/x-www-form-urlencoded');
 xhr.onreadystatechange = function() {
  if (xhr.readyState == 4)
   if (xhr.status == 200)
    if (document.getElementById){
     document.getElementById (cible).innerHTML = xhr.responseText;
     if (recharge) act_cat ("ls_cat", "ls_cat", "", false);
    }
 }
 xhr.send(val);
}


Merci d'avance
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 10:14
Bonjour,

   si on utilise la méthode "normale" coté php,
               il faut traiter $FILES   ( move_uploaded_file($_FILES.... )
      pas sûr que coté client on puisse "simuler" cela.
               <form enctype="multipart/form-data"....
                  
                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 10:33
j'ai oublié de compléter :
    perso, je ferais plutôt ça de manière classique ( formulaire et tout et tout )
       quitte à envoyer la réponse du serveur dans une iframe ( cachée ? )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014
21 mai 2008 à 10:35
Tout d'abord merci pour ta réponse

J'avais aussi pensé au contenu du fichier mais il s'agit d'images, ça risque d'être un peu lourd.

En fait le problème est le suivant :
La page action.php vers qui j'envoie le formulaire reçoit bien le contenu des champs Mais pas le fichier lui même. L'upload de fichiers via un formulaire se faisant par HTTP, je pensais que XMLHttpRequest incluerait le fichier dans la requête ou quelquechose comme ça (je sais pas vraiment comment ça fonctionne).

Je suis pas sûr de comprendre ce que tu veux dire par méthode normale.
Tu penses que c'est du côté PHP qu'il faut changer quelque chose?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 10:41
coté php, avec http, pour uploader il faut qu'il soit appelé par
     <form enctype="multipart/form-data"....
                            Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014
21 mai 2008 à 10:45
OK

En fait c'est ce que j'avais fait temporairement, histoire que ça fonctionne. Je cherchais si c'était possible avec AJAX pour rendre les choses un peu plus sympathiques (et aussi un peu par défi).

En tout cas merci
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 10:57
d'autres intervenants auront peut-être d'autres infos....
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_ov3rdoze Messages postés 414 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 23 septembre 2014
21 mai 2008 à 11:51
OK merci pour l'information.
Dans ce cas j'arrête de chercher.
0
Rejoignez-nous