Partage

XMLHttpRequest

Pour envoyer des images

13 janvier 2006 à 14:29:03

Bonjour,

J'aimerais pouvoir envoyer une image sur le serveur sans avoir à recharger la page.
Pour cela, je pensais utiliser XMLHttpRequest.

Seulement, pour l'envoi d'un formulaire, les seuls exemples que j'ai trouvé utilisent l'encodage application/x-www-form-urlencoded.
J'ai donc essayé quelquechose avec multipart/form-data, mais ça ne marche pas :(

Après tout, l'echec était prévisible, car l'image n'est pas envoyé sur le serveur puisque le formulaire n'est pas validé.

Merci de votre aide. :)


Pour info, voià ce que j'ai essayé :

var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
        xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

var method = "POST";
var boundary = "---------------------------265001916915724";
var fichier = "editeur/photo.php";
var photo = f.elements["photo"].value;

donnees  = boundary+"\r\n";
donnees += 'Content-Disposition: form-data; name="photo"; filename="'+photo+"\"\r\n";
donnees += "Content-Type: image/jpeg\r\n";

xhr_object.open(methode, fichier, true);
       
xhr_object.onreadystatechange = function()
{
        if(xhr_object.readyState == 4)
        {
              var reponse = xhr_object.responseText;
              alert(reponse);
        }
}

xhr_object.setRequestHeader("Content-type", "multipart/form-data; boundary="+boundary);
xhr_object.send(donnees);
13 janvier 2006 à 19:38:10

A prioris tu ne pourras pas le faire...

Le problème est que pour envoyer un fichier sur le serveur il faut d'abord que javascript puisse lire le fichier sur l'ordinateur. Et javascript étant très sécuriatire il n'y a pas moyen de lire les informations sur le pc client. Donc je crois que tu peux oublier ça.

XMLHttpRequest

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
  • Editeur
  • Markdown