Entete setRequestHeader envoi de fichier

payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 6 sept. 2010 à 17:37
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 7 sept. 2010 à 09:30
Bonjour,

J'ai un script :

function AjoutePhoto()   
{   
  var sel = document.getElementById('inser_photo');
  if( sel != null )
  {
    document.getElementById('DIVattente').innerHTML= "<center></center>";
    if( sel.files.length == 1 )
    {
      var variable = encodeURIComponent(sel.files[ 0 ].getAsBinary());
 
      var xhr = GetXHR();
      var url = "http://www.payebook.com/html/requete-ajax.php" ;
      xhr.open("POST",url,false);
      xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=111222111");
      var Photo = 'photo=push&filename=' + sel.files[ 0 ].fileName + '&filesize=' + sel.files[ 0 ].fileSize + 
              '&binary=' + variable;
      xhr.send( Photo );
      if(xhr.readyState 4 && xhr.status 200)
      {
        leselect = xhr.responseText;
      }
    }
  }
  document.getElementById('DIVattente').innerHTML= "Fichier copie";
}


qui est censé envoyer un fichier à un script php pour l'enregistrer sur le serveur.

probleme 1 :
Sur IE, il me met une erreur à cette ligne la :
if( sel.files.length == 1 )


probleme 2 :
la copie du fichier ne se fait pas, est-ce que c'est parce que je n'utilise pas la bonne entete ?
 xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=111222111");


Merci d'avance
Bonne fin de journée

Ju'

3 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
6 sept. 2010 à 22:26
Bonjour,
[i][b]Sur IE, il me met une erreur à cette ligne la :
if( sel.files.length = = 1 )
/b/i
la propriété files des INPUT type=file n'est pas supporté par IE ni même d'ailleurs par Opéra et qui plus est la méthode getAsBinary(), n'est supporté que par FireFox si je ne m'abuse.

je presumes que l'utilisation d'Ajax est lié au besoin de ne pas recharger la page, dans ce cas passe par la traditionnelle FORM avec comme un target une IFRAME masquée, c'est compatible et évite un maximum de code...
<form action  "action.php" enctype "multipart/form-data" method = "POST" target = "frame_cachee">
  
  
</form>



;O)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
6 sept. 2010 à 22:50
Re...
je te rajoutes le lien, il me semblait bien avoir lu quelque chose la dessus,
Ajax et Upload - part 1 par Cyril DURAND.
Il y a des liens forts intéressants...;

;O)
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
7 sept. 2010 à 09:30
Bonjour et merci pour ces précisions, je en perdrait plus une journée la dessus au moins.
Oui j'ai vu la méthode de Cyril durand, qui ne marchait pas chez moi, mais peut etre je m'y étais mal pris. Je vais retester pour voir.
0
Rejoignez-nous