IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

problème upload avec XMLHttpRequest


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut problème upload avec XMLHttpRequest
    voilà depuis un formulaire je voudrai uploader une image sur mon serveur. Mais le fichier est vide.

    le fichier admin.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    requete = new ActiveXObject("Microsoft.XMLHTTP"); 
     
    function photos(fichier) {
     
       /* on spécifie la méthode, l’URL et le type de transmission  */
    	requete.open("POST","photos.php",true);  
     
    	requete.onreadystatechange = function()
     	{
    		/* si on a recu la reponse */
    		if(requete.readyState == 4)
     		{  
    			/* on recoit les données et on les affichent*/
    			//document.getElementById("page").innerHTML = requete.responseText;
     
    			alert(requete.responseText);
    		}
    	}
    	var BOUNDARY="1cd1a122f321aac11bb7ac2e5f41bc86";
    	requete.setRequestHeader("Content-type", "multipart/form-data, boundary="+BOUNDARY);
     
    	var header= new String(); 
    	  header+="--"+BOUNDARY+"\r\n"; 
          //header+="Content-disposition: form-data; name=\"fich\"; filename=\""+fichier+"\"\r\n"; 
    	  header+="Content-disposition: form-data; name=\""+fichier.name+"\"; filename=\""+fichier.value+"\"\r\n"; 
          header+="Content-Type: application/octet-stream\r\n\r\n"; 
    	  header+="Content-Type: image/jpg\r\n\r\n"; 
          header+=fichier; 
          header+="\r\n--"+BOUNDARY+"--\r\n"; 
     
          requete.setRequestHeader("Content-length", header.length); 
        requete.send(header);  
      }
    le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="post" enctype="multipart/form-data">
    <input type="file" name="image"   onChange="javascript:photos(this)">
    <input type="submit" name="Submit2"  value="Envoyer">
    </form>
    et la page photo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $stock = '';
    $fichier=$_FILES['image'];
     
    $fread = fopen($fichier['tmp_name'],"r") ; 
           $save = fread($fread,filesize($fichier['tmp_name'])); 
           fclose($fread); 
           $fwrite = fopen($stock .    $fichier['name'],"w"); 
           fwrite($fwrite,$save,strlen($save)); 
           fclose($fwrite);
    Le fichier se crée bien a la bonne place avec le bon nom mais il est vide

    Et je vois pas ou est l'erreur.

    Un peu d'aide serait la bienvenue merci
    A.Morel

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu ne peux pas uploader un fichier par javascript pour la simple et bonne raison que javascript, sécurité onlige, ne peux acceder au filesystem et donc ne peut lire le fichier pour le mettre dans ta requete POST...

    Il va falloire trouver une autre méthode

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 93
    Points : 114
    Points
    114
    Par défaut
    Est-ce vraiment nécessaire de te servir de XMLHttpRequest ? C'est bien beau le AJAX, mais ça n'a pas toute les vertus...

    Je te suggère de poster ton formulaire avec comme target un IFRAME caché qui load ta page PHP .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form target="monIFRAME" action="photos.php" id="monFORM" name="monFORM" method="post" enctype="multipart/form-data"> 
    <input type="file" name="image"   onChange="javascript:photos(this)"> 
    <input type="submit" name="Submit2"  value="Envoyer"> 
    </form>
    Si tu fais ta page en XHTML, la propriété TARGET n'est pas reconnue. Il faut passer outre cette limitation en te servant de JavaScript, juste avant de poster ton FORM :

    Exemple : document.getElementById("monFORM").target = "monIFRAME" ;

Discussions similaires

  1. [AJAX] Utilisation XMLHttpRequest
    Par DJERO77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/08/2007, 10h27
  2. Problème d'envoi d'un formulaire avec xmlhttprequest
    Par lecra dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 17h35
  3. Problème de textarea avec XMLHTTPRequest !
    Par liv dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 26/04/2006, 09h56
  4. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo