tester si un fichier qui vient d'etre créé existe [ASP] - ASP - Programmation
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
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
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.
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
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é
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
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
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.
Marsh Posté le 03-11-2004 à 16:08:07
oui j ai fait un =nothing pour fso et pour le fichier
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
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...
Marsh Posté le 03-11-2004 à 16:27:03
strange
Sinon, tu fou un timeout sur le window.open, histoire de laisser le temps au fichier d'être libéré
Marsh Posté le 03-11-2004 à 16:30:41
comment mettre en oeuvre ca?
avant il faut mettre window.timeout=2000 ... window.open("..." )?
Marsh Posté le 03-11-2004 à 16:31:34
nan.
http://www.devguru.com
=> Cherche dans JavaScript la fonction timeout
Marsh Posté le 03-11-2004 à 16:32:10
Cette page en fait
http://www.devguru.com/Technologie [...] meout.html
Marsh Posté le 16-11-2004 à 16:32:29
en fait mon probleme etait dut à la cache.
il voyait une vieille version du site
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