2009-10-28 1 views

Répondre

12

Ce code devrait fonctionner:

private static bool UrlExists(string url) 
{ 
    try 
    { 
     new System.Net.WebClient().DownloadData(url); 
     return true; 
    } 
    catch (System.Net.WebException e) 
    { 
     if (((System.Net.HttpWebResponse)e.Response).StatusCode == System.Net.HttpStatusCode.NotFound) 
      return false; 
     else 
      throw; 
    } 
} 
+0

Cette méthode. (DownloadData) peut être utilisé pour télécharger l'image et l'enregistrer sur mon serveur? et si l'URL n'existe pas, affichez à l'utilisateur une alerte que le fichier ne peut pas être téléchargé? Une autre méthode de WebClient est DowloadDataAsync, laquelle est la meilleure? –

1

Peut-être this ou this pourrait aider. Je ne pense pas qu'il existe une commande directe pour les images, mais vous pouvez essayer d'utiliser la méthode FileExist.

+0

un lien mort et un lien javascript en fil aC# – stigzler

1

Vous pouvez utiliser une fonction System.Net.WebClient.DownloadFile pour essayer de charger l'image à partir de l'URL et voir si vous obtenez une erreur. (Probablement une erreur 404 Not Found)

C'est à peu près la seule façon de le faire à partir d'une URL. L'espace de noms System.IO et toutes les fonctions qu'il contient sont destinés à des fichiers sur une machine locale ou un réseau, de sorte qu'ils vous seraient inutiles dans cette situation.

11

Vous pouvez essayer d'utiliser System.Net.WebRequest pour envoyer une demande « HEAD » que l'URL et vérifier la réponse pour voir si le fichier existe - cela devrait faire le travail sans atually essayant de le télécharger

+2

Si le but est de vérifier l'existence seulement, c'est mieux que System.Net.WebClient.DownloadFile. Si le but est de vérifier l'existence puis de télécharger, c'est légèrement pire, car il en résultera deux requêtes HTTP distinctes. –

+0

En outre, je connais au moins deux serveurs Web publics différents qui répondent avec 403 à une requête HEAD, tout en retournant 200 pour une requête GET pour la même ressource. Pas que je tolère un tel comportement; Juste quelque chose à garder à l'esprit. :-) –

1

chaîne FileExtension = Path.GetExtension (nom de fichier).

if (fileextension.ToLower() == ".png" || fileextension.ToLower() == ".jpg" || fileextension.ToLower() == ".jpeg" || fileextension.ToLower() == ".gif" || fileextension.ToLower() == ".bmp"){} 
Questions connexes