IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Récupérer dans une variable qu'un fichier existe


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 120
    Points : 80
    Points
    80
    Par défaut Récupérer dans une variable qu'un fichier existe
    Bonjour,

    En pur JavaScript je souhaite initialiser une variable pour savoir si un fichier existe sans utiliser d'activeX (fso...)

    L'idée, pour savoir si ce fichier existe, serait de tester le chargement d'une image...

    Ce code fonctionne et détecte bien la présence ou l'absence du fichier témoin 4K.jpg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function checkImage(imageSrc, Ok, Nok) {
        var img = new Image();
        img.onload = Ok; 
        img.onerror = Nok;
        img.src = imageSrc;
    }
     
    checkImage("4K.jpg", function(){ alert("Ok"); }, function(){ alert("Nok"); } );
    Par contre ceci ne fonctionne pas car véhicule toujours la même valeur en variable FileOk... que le fichier soit ou non présent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var FileOk = 0;
    function checkImage(imageSrc, Ok, Nok) {
        var img = new Image();
        img.onload = Ok; 
        img.onerror = Nok;
        img.src = imageSrc;
    }
     
    checkImage("4K.jpg", function(){ FileOk = 1; }, function(){ FileOk = 0; } );
     
    alert(FileOk)
    Un appel de cette manière ne change rien si fonction :

    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
     
    var FileOk = 0;
    function checkImage(imageSrc) {
     var img = new Image();
        img.onload = Ok; 
        img.onerror = Nok;
        img.src = imageSrc;
    }
     
    function Ok() {
         FileOk = 1;}
     
    function Nok() {
        FileOk = 0;
    }
     
    testImage("4K.jpg");
    Merci de vos idées...

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Il faut du temps pour faire la requête et vérifier que l'image existe. C'est donc une opération asynchrone.

    Ton premier exemple fonctionne car repose sur les callbacks onload et onerror. Tu ne pourras utiliser la variable fileOk que dans un callback, quand le test est fini.
    One Web to rule them all

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 120
    Points : 80
    Points
    80
    Par défaut
    Merci de cette réponse !

    Pour information le fichier témoin 4K.jpg ne fait que 46 ko... une tempo ne change rien, de même que récupérer la variable après l'affichage alert("Ok")...

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    La taille n'a aucune importance, il faut quand même du temps pour que la requête passe du client au serveur et vice-versa. Le callback doit marcher, si ce n'est pas le cas c'est toi qui as fait une erreur.
    One Web to rule them all

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/09/2013, 00h08
  2. Réponses: 2
    Dernier message: 17/06/2008, 12h49
  3. Récupérer dans une variable une partie du nom d'un onglet
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2008, 16h34
  4. récupérer dans une variable le résultat d'une requete
    Par Stargate SG1 dans le forum Access
    Réponses: 1
    Dernier message: 31/05/2007, 18h08
  5. Récupérer dans une variable la note de bas de page
    Par Manudibango dans le forum Général VBA
    Réponses: 6
    Dernier message: 03/12/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo