Verifier si une image existe

Signaler
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004
-
Messages postés
22
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
27 mai 2016
-
Bonjour,

j'ai fait un nouveau projet C# avec ASP .Net Web application, et je voudrai savoir si il y a moyen de verifier si l'adresse URL d'une image existe (par une fonction ou une reference...) ?

merci ++

14 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
C assez simple
Tu fais un imports system.io

if file.exists(server.mappath(tonurl [as string])) then
' Cool l'image existe :)
end if

Je code en VB et je connais pas trop C# mais le principe est la et je pense que tu arriveras à traduire cette ligne en C# sinon je me forcerais :)

Cyril (Alias Jesusonline)
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

merci, je testerai demain voir si ca marche ;)
je répondrai pour dire quoi
++
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

salut,

c'est pour dire que ca marche pas :(
j'ai ajouté system.io

mais il connais pas file.exists ni server.mappath
donc a mon avis c'est pas les bonnes fonction, et jarrive pas à trouver l'équivalent dans msdn... arf

donc si quelqu'un peu m'aider!
merci
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai testé ca en VB, j'ai ecrit :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If File.Exists(Server.MapPath("web.config")) Then
Response.Write(Server.MapPath("web.config"))
End If

End Sub

Et ca à marcher nickel, tu es sur que tu programmes bien en asp.net mon code est en VB

En C# ca doit donner un truc du genre

if (File.Exists(Server.MapPath("web.config")) [= true]) {
Response.Write(Server.MapPath("web.config"));
} ;

Je suis sur que server.mappath et file.exists

Lien MSDN file.exists

Je comprend vraiment pas pourkoi ca marche pas, t'es sur que ton serveur gère l'asp.net ? :shy)

Un petit truc, je me souviens que C# est sensible à la casse donc c'est peut etre ca le probleme il faut faire ca apparemment en C# using namespace System::IO;
pour rajouter ton System.IO

Cyril (Alias Jesusonline)
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

ok,
le pb c'est que pour chercher en fichier en local ta solution marche nikel.. moi je recherche l'existence d'une image sur le web et là ca ne marche pas :(

voilà mon code :

********************************
using System.IO;

string x = "http://adresse/image.jpg";
if (File.Exists(x))
{
// L'image existe
}
********************************

il marche donc bien si je remplace la variable "x" par un lien en local ("C:/image.jpg") mais sur le web ca ne marche pas :(

quelqu'un à t'il une solution?
merci jesusonline ;)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'avais pas compris la questions comme ca dsl pour cela il faut se servir des objets de la classe system.net il me semble. Je recherche le code pouvait t'aider puis je te l'ecrit :)

regarde cette source http://www.aspfr.com/code.aspx?ID=19633 il doit surement y avoir un vérificateur pour savoir si les images existent ou pas

Cyril (Alias Jesusonline)
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

ah merci c gentil :)
ca fait 2 jours que je cherche (je débute en ASP .Net) et je trouve ça nul part :(

merci encore!
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
voila ce que j'ai fait :
J'ai importé System.Net

code en VB j'ai commenté le code mais si tu comprends pas je t'explique :)

        Dim oRequest As HttpWebRequest
        Dim oResponse As HttpWebResponse

        Try

            'On crée une nouvelle requete
            oRequest = WebRequest.Create("http://www.aspfr.com/graphix/logoasp.gif")
            'on regarde la réponse
            oResponse = oRequest.GetResponse

            ' dans certains cas, les images l'adresse renvoie une page disant que 
            ' L'image n'existe pas 
            ' Sinon il y a erreur donc le try catch prend le relais
            ' Si la page renvoie une erreur
            ' Il faut savoir si ce que l'on recoit est une image ou pas
            ' Pour cela je prend son contentype et je prend juste la premiere partie
            ' Par exemple contenttype = "image/jpeg" je ressors image
            ' Qui est le meme pour toutes les extensions d'images
            If Not Split(oResponse.ContentType, "/")(0) = "image" Then
                Response.Write("Le fichier n'est pas une image")
                Exit Try
            End If
            Response.Write("Le fichier existe")

        Catch ex As Exception

            Response.Write("Fichier non trouvé")

        End Try


Cyril (Alias Jesusonline)
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

voila merce ca marche très bien!
j'ai du convertir en C# et mettre le code en fonction de ce que j'avais besoin. je laisse ma source ici au cas où quelqu'un en aurais besoin ;)

HttpWebRequest oRequest;
HttpWebResponse oResponse;
try
{
oRequest = (HttpWebRequest)WebRequest.Create("http://adresse/image.gif);
oResponse = (HttpWebResponse)oRequest.GetResponse();
// l'image existe
}
catch
{
// l'image n'existe pas
}

voila encore merci!
ciao
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
heureusement que je n'ai aps du traduire le code que je t'avais fournis en VB car je comprend pas grand chose :-p

Mais ce que j'ai vu c'est que t'avais supprimé la verification du fichier renvoyé [:'(]
Je pense qu'elle est necessaire car par exemple
voici une image qui n'existe pas : http://www.aspfr.com/graphix/logoasp.gif

et une autre qui existe http://www.aspfr.com/graphix/logoasp.gif

Dans le premier cas si tu cliques sur le lien tu auras une reponse, du serveur car tu auras un message d'erreur, et donc comme tu as une réponse ta fonction dira que tu as une image et pourtant non. En rajoutant la petite fonction qui verifie si ce qui est retourné est bien une image tu es sur que c'est une image

Mais cette fonction ne sert que dans des cas particuliers lorsque le site est trés bien fait, et qu'il y a une gestion d'erreur correcte ce qui est malheureusement pas souvent le cas :)

Cyril (Alias Jesusonline)
Messages postés
13
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
29 janvier 2004

oké!
mais euh en fait, j'ai supprimer la verification de l'existence du fichier car j'arrivait pas à traduire ce en C#...
sinon j'ai pas mal tésté et pour l'instant il n'y à pas de lien mort donc...

par contre si tu sais traduire ca m'interesserai ;)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Je connais pas du tout C# mais je peux te l'ecrire differement si desfois ca peut t'interesser :)

If Not Split(oResponse.ContentType, "/")(0) = "image" Then
Response.Write("Le fichier n'est pas une image")
Exit Try
End If


Ca peut s'ecrire encore

            Dim ContentType As String = oResponse.ContentType
            Dim s() As String
            s = ContentType.Split("/")
            If Not s(0) = "image" Then
                Response.Write("Le fichier n'est pas une image")
            Else
                Response.Write("Le fichier existe")
            End If


J'espere que ca aura pu t'aider :)

Cyril (Alias Jesusonline)
Messages postés
2
Date d'inscription
jeudi 12 mai 2005
Statut
Membre
Dernière intervention
14 mai 2005

Salut,
Même si ça arrive en retard, on sait jamais, il y'a toujours des gens qui pourront en profiter

J'ai essayé ça et ça marche bien

Tester sur la taille du fichier oResponse.ContentLength
si le fichier n'existe pas ça retourne -1 sinon c'est la taille de celui-ci
Le code c# est le suivant:

oRequest = (HttpWebRequest)WebRequest.Create(sourceFileUrl);
oResponse = (HttpWebResponse)oRequest.GetResponse();
if(oResponse.ContentLength < 0
{
// le fichier n'existe pas
}
else
{
// le fichier existe
try // on peut procéder au téléchargement
{
// Création d'un objet WebClient qui permet de télécharger un fichier)
WebClient wc = new WebClient();

// Lancement du téléchargement
// argument 1 : url du fichier source
// argument 2 : l'emplacement ou enregistrer le fichier sur le disque dur

wc.DownloadFile(source, destination);


// Destruction de l'objet WebClient
wc.Dispose();
}
catch(Exception e)
{
}
Messages postés
22
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
27 mai 2016

>sam_sam80

tu as testé ?

car la methode GetResponse() lance une System.Net.WebException (Le serveur distant a retourné une erreur : (404) Introuvable.) si le fchier n'existe pas, du coup le reste ne sert p as à grand chose (dansl'etat) ...

a plus

paradoxxl