Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2011, 01h20   #1
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
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 :
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 :
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!!!
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 08h59   #2
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
Bonjour

Citation:
"../" & serverMapPath & "/images/produit/" & description_prod_formate & ".jpg")
Fais plutôt :
Code :
1
2
server.MapPath("../images/produit/" & description_prod_formate & ".jpg")
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 15h36   #3
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
Citation:
Envoyé par roro06 Voir le message
Bonjour

Fais plutôt :
Code :
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.
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 16h08   #4
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
, alors comment sont définies tes variables Fichier et servermappath ?
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 16h24   #5
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
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 :
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à...
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 16h30   #6
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
vbscript n'est pas sensible à la casse
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 17h13   #7
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Citation:
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é...
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/04/2011, 17h39   #8
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
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 :
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 :
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 :
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?
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 17h44   #9
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
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 ?
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 17h45   #10
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
Citation:
serverMapPath est une variable que je reçois en paramètre


pas en querystring, quand même ?
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 17h52   #11
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
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.
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/04/2011, 10h55   #12
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
Citation:
En passant, ton lcase aurait du être comme ca :
Code :
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
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h24   #13
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
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 :
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
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 13h53   #14
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
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 :
1
2
servermappath = "toto"
Chemin = server.MapPath(serverMapPath&"/images/produit/"& file)
ça donne :
Citation:
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.
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 14h09   #15
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
aperçu écran du code exécuté
Images attachées
Type de fichier : jpg Sans-titre-1.jpg (21,0 Ko, 6 affichages)
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 14h14   #16
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
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 ?
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 14h40   #17
Membre confirmé
 
Homme Olivier
Webmaster Pays Basque
Inscription : avril 2004
Messages : 151
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 40
Localisation : France

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

Informations forums :
Inscription : avril 2004
Messages : 151
Points : 200
Points : 200
Envoyer un message via Skype™ à eclisse
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.
eclisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h35   #18
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
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").
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 17h51   #19
Nouveau Membre du Club
 
Homme Stéphane Demers
Consultant E-Business
Inscription : juin 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Demers
Localisation : Canada

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

Informations forums :
Inscription : juin 2009
Messages : 60
Points : 38
Points : 38
Non, désolé mais vos propositions ne m'aident pas...

Voir mon message d'avant pour un exemple concret de ma situation...
DjSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 16h11   #20
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
As tu pensé à utiliser
Code asp :
Request.ServerVariables("APPL_PHYSICAL_PATH")
qui te mène uniquement à
Citation:
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 :
Citation:
dossier1
-> dossierImage
-> mapage.asp
Ainsi tu serais moins embêter pour utiliser il te suffirait donc de mettre
Code :
server.MapPath("dossierImage")
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web