Bonjour,

après avoir uploadé avec succès un fichier avec la procédure en fin de conversation, j'ai un petit souci sous WXP SP2 (pas encore essayé sous Ubuntu).
Le fichier en question est inacessible en renommage, déplacement et suppression tant que je n'ai pas quitté FF puisque lors de ces tentatives, Windows m'indique que le fichier est utilisé par une autre ressource.
Faut-il fermer le fichier ouvert mais je ne vois rien ici ?
Faut-il fermer le flux mais ce que je lis ne m'inspire pas trop non plus ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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';
}