Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Autres langages pour le Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2007, 16h56   #1
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Par défaut [XUL] Fichier uploadé restant ouvert

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 :
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';
}
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 18h21   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
ben faut tester... pour voir


le coup du delete_on_close doit pouvoir se modifier...
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 19h14   #3
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par gorgonite
ben faut tester... pour voir


le coup du delete_on_close doit pouvoir se modifier...
vivi, mais tester quoi !! ?? : en fait j'ai testé le
Code :
1
2
3
4
5
6
 
...
 mis.appendStream(endsis);
  fin.close();
  var xmlr = new XMLHttpRequest();
...
mais rien de mieux !
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 19h22   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
je pensais au fin.close()

mais si ça marche pas, je sèche...


peux-tu expliquer plus en détails les symptomes ?


nb: j'ai arrêté le xul depuis 8 mois...
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 19h36   #5
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par gorgonite
je pensais au fin.close()

mais si ça marche pas, je sèche...


peux-tu expliquer plus en détails les symptomes ?

Citation:
nb: j'ai arrêté le xul depuis 8 mois...
Je compatis. Rassure moi, ce n'est pas à cause de xul ?
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 21h48   #6
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Citation:
Envoyé par Christophe Charron
Je compatis. Rassure moi, ce n'est pas à cause de xul ?

non pas du tout... mais mes études m'ont pris trop de temps

sinon j'ai peut-être possibilité de remonter en force dans xul... via un projet pour la fondation mozilla directement
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2007, 22h00   #7
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par gorgonite
sinon j'ai peut-être possibilité de remonter en force dans xul... via un projet pour la fondation mozilla directement
Félicitations, j'espère pour toi que ça va se faire.
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2009, 16h00   #8
Invité régulier
 
Inscription : juin 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 6
Points : 6
Points : 6
Je sais que je déterre un très vieux post mais je tiens quand même à répondre parce que j'ai pas mal galéré aussi là-dessus.

En fait pour que le fichier qui est uploadé soit fermé, il suffit de mettre ceci à la place de l'init du nsIFileInputStream :

Code :
stream.init(file, -1, -1, Components.interfaces.nsIFileInputStream.CLOSE_ON_EOF);
C'est tout con mais faut le savoir...
nesfe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2009, 08h33   #9
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Citation:
Envoyé par nesfe Voir le message
Je sais que je déterre un très vieux post mais je tiens quand même à répondre parce que j'ai pas mal galéré aussi là-dessus.

En fait pour que le fichier qui est uploadé soit fermé, il suffit de mettre ceci à la place de l'init du nsIFileInputStream :

Code :
stream.init(file, -1, -1, Components.interfaces.nsIFileInputStream.CLOSE_ON_EOF);
C'est tout con mais faut le savoir...
Vieux post peut-être, mais le problème avait été laissé en suspens et donc un grand merci pour me permettre de traîner une casserole de moins.
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h51.


 
 
 
 
Partenaires

Hébergement Web