Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Envoi de fichier

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

# Re: Envoi de fichier

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.