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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
const BOUNDARY = "xofxonxof"; //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 XPC = "UniversalXPConnect";
const FP = "@mozilla.org/filepicker;1";
const FL = "@mozilla.org/file/local;1";
const MIME = "@mozilla.org/mime;1";
const HASH = "@mozilla.org/security/hash;1";
const nsIMultiplexInputStream = Components.interfaces.nsIMultiplexInputStream;
const nsIFileInputStream = Components.interfaces.nsIFileInputStream;
const nsIStringInputStream = Components.interfaces.nsIStringInputStream;
const nsIBufferedInputStream = Components.interfaces.nsIBufferedInputStream;
const nsIFilePicker = Components.interfaces.nsIFilePicker;
const nsiLocalFile = Components.interfaces.nsILocalFile;
const nsICryptoHash = Components.interfaces.nsICryptoHash;
const nsIMIMEService = Components.interfaces.nsIMIMEService;
const sl="\n";
function fa_fichier_lit_et_envoie(vv_script,vv_callback,vv_fichier) {
try {
netscape.security.PrivilegeManager.enablePrivilege(XPC);
} catch (e) {
alert("Vous n'avez pas l\'autorisation de lire des fichiers!!");
return null;
}
// Piqué ici : http://xulfr.org/wiki/ApplisWeb/Request
var file = Components.classes[FL].createInstance(nsiLocalFile);
file.initWithPath(vv_fichier);
if ( file.exists() != true) {
alert("Le fichier "+vv_fichier+" n'existe pas");
return null;
}
var mis = Components.classes[MULTI].createInstance(nsIMultiplexInputStream);
var fin = Components.classes[FINPUT].createInstance(nsIFileInputStream);
fin.init(file, 0x01, 0444, null);
var hsis = Components.classes[STRINGIS].createInstance(nsIStringInputStream);
var buf = Components.classes[BUFFERED].createInstance(nsIBufferedInputStream);
var endsis = Components.classes[STRINGIS].createInstance(nsIStringInputStream);
buf.init(fin, 4096);
var vl_c_disp00='Content-Disposition: form-data;name="addfile"'+sl+sl;
var vl_c_disp01='Content-Disposition: form-data;name="filename";filename="'+file.leafName+'"'+sl;
var vl_c_type='Content-Type: ' + Components.classes[MIME].getService(nsIMIMEService).getTypeFromFile(file) + sl+sl;
var sheader = new String();
sheader += sl;
sheader += "--" + BOUNDARY + sl;
sheader += vl_c_disp00;
sheader += sl + "--" + BOUNDARY + sl;
sheader += vl_c_disp01;
sheader += vl_c_type;
hsis.setData(sheader, sheader.length);
var endsis = Components.classes[STRINGIS].createInstance(nsIStringInputStream);
var bs = new String(sl+'--' + BOUNDARY + '--'+sl);
endsis.setData(bs, bs.length);
mis.appendStream(hsis);
mis.appendStream(buf);
mis.appendStream(endsis);
var xmlr = new XMLHttpRequest();
xmlr.open("POST", vv_script, true);
xmlr.setRequestHeader("Content-Length", mis.length );
xmlr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
xmlr.onreadystatechange=function() {if(xmlr.readyState==4) {if(vv_callback!=""){vv_callback(xmlr.responseText,xmlr.responseText.length);}}};
xmlr.send(mis);
return 'ok';
} |
Partager