[ASP] tester si un fichier qui vient d'etre créé existe

tester si un fichier qui vient d'etre créé existe [ASP] - ASP - Programmation

Marsh Posté le 02-11-2004 à 17:42:45    

[ASP] tester si un fichier qui vient d'etre créé existe
 
Bonjour,
je voudrais tester si un fichier coté serveur existe à un instant t.
En effet le fichier a été créé suite à l'appuis du bouton submit d'un formulaire.
Apres lors du test, celui ci n'est pas reconnu. (du moins pas la premiere fois)
Je cherche un moyen de choper le fichier du premier coups sans faire de 2eme passage.
ce serait quelquechose comme fso.refresh ... if fso.fileexists("toto.txt" )
 
si qqn aurais une piste
 
Merci
 
cybermed


Message édité par cyber_med le 02-11-2004 à 17:44:52
Reply

Marsh Posté le 02-11-2004 à 17:42:45   

Reply

Marsh Posté le 02-11-2004 à 17:47:07    

ben c'est la syntaxe que tu vians de donner...
 
Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject" )
if fso.fileexists(Server.Mappath("/tmp/toto.txt" )) then
  Response.Write "Trouvaid"
else
  Response.Write "DTC"
end if

Reply

Marsh Posté le 02-11-2004 à 17:56:36    

justement avec ca, le fichier "toto.txt" n'est pas vu la 1ere fois apres le formulaire, il faut que je relance le formulaire pour qu'il voit le fichier.
 
n'existe t il pas des outils de synchronisation en asp?
genre: je créee un fichier. attendre qu'il arrive. lire le fichier.
 
Merci de ta réponse Arjuna


Message édité par cyber_med le 02-11-2004 à 17:57:10
Reply

Marsh Posté le 02-11-2004 à 18:01:08    

dim prout
prout = false
do while not prout
   if fso.fileexists("toto.txt" ) then
      prout = true
   else
      prout = not true ' histoire de rien faire
   end if
loop
 
Normalement ça marche.
 
Seul truc, c'est que IIS va bouffer 100% du CPU en attendant que le fichier soit créé. Y'a pas d'autre solution hormis faire un activex qui fait un wait(x) (ou un "DoEvents" en VB), que t'appelles dans la boucle.

Reply

Marsh Posté le 02-11-2004 à 18:10:39    

ouai si avec une variable flag,
mais il faut que je la passe en parametre d'une page à l'autre.
 
Je vais voir niveau temps si c'est long: normalement ca dure juste le temps de la creation du fichier texte
 
Merci Arjuna


Message édité par cyber_med le 02-11-2004 à 18:11:06
Reply

Marsh Posté le 02-11-2004 à 19:59:20    

Mais je comprends pas : le fichier texte, tu le crées comment ?
C'est pas ton script ASP qui le crée ???
 
Parceque l'ASP fonctionne par défaut en mode synchrone, donc tant que la fonction qui crée le fichier n'a pas terminé de le créer, l'ASP n'a pas la main... Y'a que si tu utilises un ActiveX avec des fonctions assychrones que tu auras le problème, et normalement, s'il est bien foutu, tu peux contrôler la chose plus proprement...
 
Par contre, évidement, si c'est une autre page ASP qui génère le fichier par exemple, c'est rappé :/

Reply

Marsh Posté le 03-11-2004 à 09:23:22    

c'est le script asp qui créé le fichier texte et appelle un autre script sur une autre fenetre.
Le deuxieme script lui teste si le fichier existe et réalise un traitement.
__
(et ce que j'ai remarqué c'est que le 2eme script ne vois pas le fichier tout de suite)
il faudrait une fonction qui fasse un refresh sur le serveur style fso.refresh ... fso.fileexists mais ca n'existe pas. ou bien comme tu as dis avec un flag, je vais voir pour le flag si ca marche

Reply

Marsh Posté le 03-11-2004 à 10:17:42    

too bad: avec le flag ca ne marche pas:
page 1 :  
'script de creation du fichier texte
'aller toto.asp?Synchro=1
 
page toto.asp:
varSynchro=Request("Synchro" )
while varSynchro=1
      if fso.fileexists("Mon fichier.txt" ) then
           varSynchro=0
      end if
wend
'suite

Reply

Marsh Posté le 03-11-2004 à 10:49:33    

Hmmm... A la fin de la procédure de création de ton fichier, tu fais bien ? :
 
fil.close
set fil = Nothing
set fso = Nothing
 
Sans ces lignes, qui indiquent au moteur ASP de lever les verroux sur le fichier, il est normal que le fichier mette du temps à apparaître : il faut attendre que le garbage collector de l'ASP détruise les objets pour que le fichier soit effactivement présent sur le disque et accessible.


Message édité par Arjuna le 03-11-2004 à 10:49:50
Reply

Marsh Posté le 03-11-2004 à 16:08:07    

oui j ai fait un =nothing pour fso et pour le fichier


Message édité par cyber_med le 03-11-2004 à 16:16:34
Reply

Marsh Posté le 03-11-2004 à 16:08:07   

Reply

Marsh Posté le 03-11-2004 à 16:15:45    

Bizarre... Parceque moi j'ai jamais eu ce problème, quand bien même je lisais dans le fichier à la ligne après que je l'avais écrit :??:


Message édité par Arjuna le 03-11-2004 à 16:16:02
Reply

Marsh Posté le 03-11-2004 à 16:19:30    

set f = nothing
Set fso = nothing
response.write "<SCRIPT language='javascript'>"
response.write "window.open(" & chr(34) & "resultat.asp?Nom=" & Request("Nom" ) & chr(34) &  "," & chr(34) & "bas" & chr(34) & " );"
response.write "</SCRIPT>"
 
.. et c'est dans l'autre fenetre que je lit le fichier créé
 
et la il ne detecte pas tout de suite le changement ou prend les valeurs d'un fichier périmé
 
 
Merci pour ces precisions j ai de quoi réflechir...


Message édité par cyber_med le 03-11-2004 à 16:27:45
Reply

Marsh Posté le 03-11-2004 à 16:27:03    

strange [:spamafote]
 
Sinon, tu fou un timeout sur le window.open, histoire de laisser le temps au fichier d'être libéré :)

Reply

Marsh Posté le 03-11-2004 à 16:30:41    

comment mettre en oeuvre ca?
avant il faut mettre window.timeout=2000 ... window.open("..." )?

Reply

Marsh Posté le 03-11-2004 à 16:31:34    

nan.
 
http://www.devguru.com
 
=> Cherche dans JavaScript la fonction timeout

Reply

Marsh Posté le 03-11-2004 à 16:32:10    

Reply

Marsh Posté le 03-11-2004 à 16:34:22    

merci Arjuna! je te tiens au courant!

Reply

Marsh Posté le 16-11-2004 à 16:32:29    

en fait mon probleme etait dut à la cache.
 
il voyait une vieille version du site


Message édité par cyber_med le 17-11-2004 à 19:09:46
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed