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.