Test d'existence d'un fichier en javascript

Signaler
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,


j'ai une page de mon application web avec un lien qui ouvre un fichier htm généré.
Or je voudrais tester si ce fichier généré en question existe bien pour, le cas échéant, affiché une popup disant que le fichier n'existe pas...
Voici la fonction que j'utilise...


function fabsent()
{
 var fso;
 fso = new ActiveXObject("Scripting.FileSystemObject");
 var chemin = "C:\mon_fichier";
 if (!fso.FileExists(chemin))
 {
 alert ("Ce document n'existe pas");
 }
}


Le problème est que je me retrouve avec une erreur qui me dit : "Un composant ActiveX ne peut pas créer un objet".


Quelqu'un sait-il d'où vient le problème?
Merci d'avance pour vos réponses.


Cordialment,
Sebicool

13 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
bizarre ! bizarre !
ma réponse est apparue un instant dans la pub de droite !

je remet :

bonjour,
il faut autoriser les ActiveX dans Internet Explorer.
Outils / Options Internet / sécurité
   choisir la zone à paramétrer ( intranet local ou sites de confiance
   à mon avis, sinon on prend des risques )
   personnaliser le niveau, et dans la liste qui s'affiche
   cocher ce qui doit l'e^tre ( activer ou demander )

CordialementBu
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

Bonjour Bultez,

merci pour ta réponse...
Y aurait-il une autre solution que de baisser le niveau de sécurité d'internet, car je ne pense pas que mes clients aprécient cette idée...

Cordialement,
Sebicool
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
on ne baisse pas le niveau de sécurité !!??!!!     on accepte les activeX ou pas dans les zones voulues.
et tant qu'on ne les accepte pas, ben, mon foie, ils ne s'exécutent pas.
CordialementBu
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ou alors, si c'est une page.htm locale renomme là page.hta
et on l'exécute en double cliquant dessus, non pas en lançant IE
( ce sera d'ailleurs interprété par mshta.exe )
Cordialement     Bul 
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

Ok. C'est bon pour l'activation...
Mais je me retrouve avec une erreur "Objet attendu" sur la ligne de déclaration
"var fso = new ActiveXObject("Scripting.FileSystemObject");"

Sais-tu d'où ca peut venir?
Merci.

Cordialement,
Sebicool
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
var chemin = "C:\\mon_fichier"; ou "C:/mon_fichier"
sinon, pas de raison... attention la numérotation commence à 0
pour debogger (IE) :
•————————•——————————————————————————————————————————————————————————•
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | o Afficher une notification de chaque erreur de script |
| | o Désactiver le débogage de Scripts (Internet Explorer) |
| | et mieux, : télécharger le Debogger IE |
| | voir aussi : DebugBar et Companion JS |
•————————•——————————————————————————————————————————————————————————•

CordialementBu
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

Effectivement, avec des \ et non des /, ca fonctionne...

Pour rappel, la fonction que j'utilise est :

function fabsent()
{
 var fso = new ActiveXObject("Scripting.FileSystemObject");
 var chemin = "C:\mon_fichier";
 if (!fso.FileExists(chemin))
 {
 alert ("Le fichier n'existe pas.");
 return false;
 }
}

Or, quand le fichier n'existe pas, il y a la popup mais IE tente d'ouvrir quand même la page (ce que je ne veut pas bien sûr) et quand le fichier existe, la popup s'ouvre aussi (ce que je ne veut pas) puis le fichier.
As-tu une idée?

En tout cas, merci pour tout.
Cordialement,
Sebicool
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

J'ai essayé de changer le lien en texte normal et de modifier la fonction en :

function fabsent()
{
 var fso = new ActiveXObject("Scripting.FileSystemObject");
 var chemin = "C:\mon_fichier";
 if (!fso.FileExists(chemin))
 {
 alert ("Le fichier n'existe pas.");
 return false;
 }
 else
 {
  fso.OpenTextFile(chemin,1,false);
 }
}

Mais j'ai toujours le même problème...
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

Le même problème étant que, que le fichier existe ou pas, je ne rentre pas dans le else... C'est très bizarre...
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

Bon, j'ai changé le chemin du fichier en "C://mon_fichier" et la je rentre dans le else et seulement quand le fichier existe!
Mais par contre, c'est le OpenTextFile qui marche pas...
Ca me rend fou...

Une idée?
Merci.

Cordialement,
Sebicool
Messages postés
32
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
12 décembre 2008

J'ai remplacé le OpenTextFile par un window.open et la ca marche! enfin...

Merci.

Cordialement,
Sebicool
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
opentextfile et window.open ça n'a rien à voir !
opentextfile ouvre un fichier pour le traiter, window.open l'affiche.
mais bon, si c'est ce qu'il te fallait....
maintenant si ce n'est que pour l'afficher, doit bien y avoir des
solutions pour éviter les ActiveX ( et donc le paramétrage de IE )
Cordialement    Bul
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36