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

ASP Discussion :

FileExists retourne Faux alors que l'image est bien là!


Sujet :

ASP

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut FileExists retourne Faux alors que l'image est bien là!
    Bonjour!

    J'ai fait quelques recherches sur le forum, j'ai trouvé quelques réponses, mais rien pour aider mon cas. Je me casse la tête depuis des jours à trouver le bug...

    Voici le bout de code ASP qui me rend fou:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if Fichier.FileExists(server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg")) Then
    	image_page = "images/produit/" & description_prod_formate & ".jpg"
    else
    	image_page = "images/produit/non_disponible_small.jpg"
    end if
    En bref, mon code valide si une image est présente dans un autre dossier local, sur le même disque (sous C:\inetpub\wwwroot\). Ma 1ère ligne retourne Faux, mais quand je débogues en faisant un response.write sur ce que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg")
    , et que je fais un copier/coller dans une recherche, je trouve bien l'image en question. Le "path" est donc bon, mais mon foutu code me retourne Faux... j'ai vérifié les droits, et oui j'ai les droits nécessaires...

    Je ne sais plus où regarder!!

    Merci d'avance de votre aide!!!

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    "../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg")
    Fais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    server.MapPath("../images/produit/" & description_prod_formate & ".jpg")

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par roro06 Voir le message
    Bonjour

    Fais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    server.MapPath("../images/produit/" & description_prod_formate & ".jpg")
    Non car "serverMapPath" est une variable qui représente une partie du path, et qui change tout au long de l'exécution de mon script.

  4. #4
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    , alors comment sont définies tes variables Fichier et servermappath ?

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    A tout hasard, (parce que ça m'ai déjà arrivé de me prendre la tête dessus...), ça ne serait pas un pb de casse ??

    Genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Lcase(Fichier.FileExists(server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg"))) Then
    des fois c'est super con, mais c'est peut être pas le cas là...

  6. #6
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    vbscript n'est pas sensible à la casse

  7. #7
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    vbscript n'est pas sensible à la casse
    Non, mais windows si...
    du coup si tu compares un fichier toto.jpg avec un toto.JPG, ça va pas marché...

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut
    Pour répondre à la question, serverMapPath est une variable que je reçois en paramètre, et j'ai bien vérifié, comme j'ai mentionné, avec des response.write que le URL était existant et complet.

    Fichier est initié comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Fichier = Server.CreateObject("Scripting.FileSystemObject")
    Pour ce qui est de la case, la case est la même. J'ai tout de même vérifié avec lcase, mais ca donne le même problème. En passant, ton lcase aurait du être comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Fichier.FileExists(Lcase(server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg"))) Then
    Je vous le répète, j'ai débugé en ajoutant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.write server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg")
    , puis en suivant les URL affiché en local, et les images étaient bien présente... les droits sont bien présent pour le site exécutant le script vers le dossier que je consulte pour validation de la présence de l'image...

    Vous allez vous tapper sur le mur avec moi?

  9. #9
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Re

    Ce qui me gêne, c'est la présence de ce "../"

    Sur un serveur, par principe, et par défaut, l'accès au répertoire parent n'est pas autorisé, sauf config spécifique. Est-ce le cas ?

    ps : y'a t'il undans la page ?

  10. #10
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    serverMapPath est une variable que je reçois en paramètre


    pas en querystring, quand même ?

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par roro06 Voir le message


    pas en querystring, quand même ?
    Ca change quoi pour la problématique actuelle? De toute façon, c'est un service Web interne, alors si tu fais référence à un aspet sécurité, y a aucun problème.

  12. #12
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    En passant, ton lcase aurait du être comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Fichier.FileExists(Lcase(server.MapPath("../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg"))) Then
    Oui t'as raison, j'ai fait ça à la va vite... sorry

  13. #13
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    J'ai repris ton code en essayant de le mettre en place, bien que je ne connaisse pas le contenu de ton servermappath.
    Je suis d'accord avec roro sur le "../" qui te pose peut être un pb...

    Décomposes ton code pour voir ce qui peut bloquer. Je te propose de tester ça:

    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
    18
     
    'servermappath="rep/subrep"
    'description_prod_formate="1"
    file = Lcase(description_prod_formate&".jpg")
    Chemin = server.MapPath(serverMapPath&"/images/produit/"& file)
     
    Set Fichier = Server.CreateObject("Scripting.FileSystemObject")
    response.write "Chemin="& Chemin &"<br>"
    response.write "Fichier="& file &"<br>"
    response.write "Exist="& Fichier.FileExists(Chemin)&"<br>"
    if Fichier.FileExists(Chemin) Then
    	image_page = servermappath & "/images/produit/"& file
    else
    	image_page = "images/produit/non_disponible_small.jpg"
    end if
    response.write "Image="& image_page&"<br>"
    response.write "<img src="""&image_page&""">"
    Set Fichier = nothing
    J'ai enlevé de l'object Server.MapPath ton "../". ceci dit, je ne sais pas effectivement quel est ton emplacement de base

  14. #14
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Salut,

    Affiche nous le résultat de ton code, car pour ma part j'ai essayé avec ce que tu as mis et en retour j'ai le résultat de qui se double dans Chemin, ce qui donne par exemple :
    Code asp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    servermappath = "toto"
    Chemin = server.MapPath(serverMapPath&"/images/produit/"& file)
    ça donne :
    Chemin = C:\monsite\toto\toto\images\produit\image1.jpg
    ce qui retourne faux. Or si je met directement toto dans la le résultat retourne Vrai et l'image apparait.

  15. #15
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    aperçu écran du code exécuté
    Images attachées Images attachées  

  16. #16
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    Citation Envoyé par eclisse Voir le message
    aperçu écran du code exécuté
    Cela retourne vrai, tu as mis le résultat de la variable servermappath directement dans le chemin ?

  17. #17
    Membre actif
    Homme Profil pro
    Webmaster Pays Basque
    Inscrit en
    Avril 2004
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster Pays Basque
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 207
    Points : 238
    Points
    238
    Par défaut
    Ah oui... différence entyre le code copié et celui exécuté :
    les 2 premières lignes ne sont pas commentés chez moi !!!

    Je les avais commenté ici juste pour ne pas fausser les tests de DjSteph, puisqu'on ne sait pas comment il popule sa variable.

  18. #18
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut
    Ok, merci tout le monde, je vais essayer ca ce soir... en espérant que ca donne quelque chose! Je vous tiens au courant!

    Juste pour votre info, j'utilises le "../" parce que le sous-dossier où je veux faire la vérification est à un autre niveau. Par exemple:

    Lors de l'exécution, je suis sous C:\monsite\toto\ mais je veux vérifier la présence de l'image sous C:\monsite\tata\images\produit\image1.jpg

    server.MapPath me retourne C:\monsite\toto\ alors que si j'ajoutes "../" dans mon code, j'ai bien ce que je veux, soit "C:\monsite\" + servermappath (qui dans cet exemple-ci est "tata").

  19. #19
    Membre du Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Juin 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 76
    Points : 69
    Points
    69
    Par défaut
    Non, désolé mais vos propositions ne m'aident pas...

    Voir mon message d'avant pour un exemple concret de ma situation...

  20. #20
    Membre expérimenté
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Points : 1 350
    Points
    1 350
    Par défaut
    As tu pensé à utiliser
    Code asp : Sélectionner tout - Visualiser dans une fenêtre à part
    Request.ServerVariables("APPL_PHYSICAL_PATH")
    qui te mène uniquement à
    C:/monsite
    ceci t'éviterais d'utiliser je pense que ton souci vient de là.

    Sinon place ton (ou tes) dossier(s) dans le même répertoire où se trouve le fichier asp, en gros ça te donnerais :
    dossier1
    -> dossierImage
    -> mapage.asp
    Ainsi tu serais moins embêter pour utiliser il te suffirait donc de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server.MapPath("dossierImage")

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/11/2014, 16h23
  2. [Système/Fichiers/API] FileExists retourne true alors que le fichier n'existe plus !
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/03/2014, 12h08
  3. Réponses: 1
    Dernier message: 29/09/2011, 11h31
  4. Réponses: 4
    Dernier message: 29/05/2010, 00h22
  5. Réponses: 7
    Dernier message: 30/12/2006, 17h13

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