Envoyé par : wako
Date : 12/06/2006 09:57
Bonjour,
Je crois que je tombe sur mon dernier souci.
Je dois envoyer un fichier au serveur, j'ai suivi le wiki, mais en vain :
var fileExport = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); fp.init(window, "Save as", nsIFilePicker.modeOpen); var rez = fp.show(); if (rez == nsIFilePicker.returnOK){ fileExport = fp.file; } else { return false; } const BOUNDARY="111222111"; //ce qui va nous servir de délimiteur const MULTI="@mozilla.org/io/multiplex-input-stream;1"; const FINPUT = "@mozilla.org/network/file-input-stream;1"; const STRINGIS="@mozilla.org/io/string-input-stream;1"; const BUFFERED="@mozilla.org/network/buffered-input-stream;1"; const nsIMultiplexInputStream=Components.interfaces.nsIMultiplexInputStream; const nsIFileInputStream=Components.interfaces.nsIFileInputStream; const nsIStringInputStream=Components.interfaces.nsIStringInputStream; const nsIBufferedInputStream = Components.interfaces.nsIBufferedInputStream; // 1 var mis=Components.classes[MULTI].createInstance(nsIMultiplexInputStream); //2 var fin=Components.classes[FINPUT].createInstance(nsIFileInputStream); fin.init(fileExport,0x01,0444,false); var buf=Components.classes[BUFFERED].createInstance(nsIBufferedInputStream); buf.init(fin,4096); //3 var hsis=Components.classes[STRINGIS].createInstance(nsIStringInputStream); var sheader=new String(); sheader+="\n"; sheader+="--"+BOUNDARY+"\nContent-Disposition: form-data; name=\"text\"\n"; sheader+="\n1"; sheader+="\n"+"--"+BOUNDARY+"\n" sheader+="Content-Disposition: form-data; name=\"filename\"; filename=\""+fileExport.leafName+"\"\n"; sheader+="Content-Type: application/octet-stream\n"; sheader+="Content-Length: "+fp.file.fileSize+"\n"; sheader+="\n"; hsis.setData(sheader,sheader.length); //4 var endsis=Components.classes[STRINGIS].createInstance(nsIStringInputStream); var bs=new String("\r\n--"+BOUNDARY+"--\r\n"); endsis.setData(bs,bs.length); //5 mis.appendStream(hsis); mis.appendStream(buf); mis.appendStream(endsis); //6 var xmlr = new XMLHttpRequest(); xmlr.open("POST", urlserver + "test.php",false); xmlr.setRequestHeader("Content-Type","multipart/form-data; boundary="+BOUNDARY); xmlr.setRequestHeader("Connection","close"); xmlr.setRequestHeader("Content-Length",(mis.available()-2)); xmlr.send(mis); if ( xmlr.status != "200" ) { alert("xmlr erreur " + xmlr.status); } else { alert(xmlr.status+" "+xmlr.responseText); }
Comme dit dans le wiki, je récupère bien 1 dans $_POST'text' mais rien dans $_FILE.
J'ai louper quelque chose ? Je fais mal la récuperation ?
Merci de votre aide.
wako
Envoyé par : Capripot
Date : 17/06/2006 23:35
j'ai le meme probleme que toi ... http://xulfr.org/forums/read.php?1,5080(..) personne n'a besoin de ça ?
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.