Comment vérifier si un fichier existe sur un serveur en utilisant c # et la classe WebClient

StackOverflow https://stackoverflow.com/questions/830435

Question

Dans mon application, j'utilise la classe WebClient pour télécharger des fichiers d'un serveur Web en appelant simplement la méthode TéléchargerFichier . Maintenant, je dois vérifier si un fichier existe avant de le télécharger (ou au cas où je voudrais juste m'assurer qu'il existe). J'ai deux questions à ce sujet:

  1. Quel est le meilleur moyen de vérifier si un fichier existe sur un serveur sans transférer trop de données sur le réseau? (C’est un très grand nombre de fichiers que je dois vérifier) ??
  2. Existe-t-il un moyen d'obtenir la taille d'un fichier distant sans le télécharger?

Merci d'avance!

Était-ce utile?

La solution

WebClient est assez limité; si vous passez à WebRequest , vous avez alors la possibilité d'envoyer une demande HTTP HEAD. Lorsque vous émettez la demande, vous devez obtenir une erreur (si le fichier est manquant) ou un WebResponse avec une propriété ContentLength valide.

Modifier: Exemple de code:

WebRequest request = WebRequest.Create(new Uri("http://www.example.com/"));
request.Method = "HEAD";

using(WebResponse response = request.GetResponse()) {
   Console.WriteLine("{0} {1}", response.ContentLength, response.ContentType);
}

Autres conseils

Lorsque vous demandez un fichier à l'aide de la classe WebClient , l'erreur 404 (fichier introuvable) entraîne une exception. Le meilleur moyen consiste à gérer cette exception et à utiliser un indicateur qui peut être défini pour voir si le fichier existe ou non.

L'exemple de code est le suivant:

System.Net.HttpWebRequest request = null;
System.Net.HttpWebResponse response = null;
request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("www.example.com/somepath");
request.Timeout = 30000;
try
{
    response = (System.Net.HttpWebResponse)request.GetResponse();
    flag = 1;
}
catch 
{
    flag = -1;
}

if (flag==1)
{
    Console.WriteLine("File Found!!!");
}
else
{
    Console.WriteLine("File Not Found!!!");
}

Vous pouvez mettre votre code dans des blocs if respectifs. J'espère que ça aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top