Как проверить, существует ли файл на сервере, используя c # и класс WebClient
Вопрос
В своем приложении я использую класс WebClient для загрузки файлов с веб-сервера, просто вызывая метод DownloadFile . Теперь мне нужно проверить, существует ли определенный файл перед его загрузкой (или в случае, если я просто хочу убедиться, что он существует). У меня есть два вопроса с этим:
<Ол>Заранее спасибо!
Решение
WebClient
довольно ограничен; если вы переключитесь на использование WebRequest
, вы получите возможность отправлять HTTP-запрос HEAD. Когда вы отправляете запрос, вы должны либо получить сообщение об ошибке (если файл отсутствует), либо WebResponse
с допустимым свойством ContentLength
.
Изменить. Пример кода:
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);
}
Другие советы
Когда вы запрашиваете файл с использованием класса WebClient , ошибка 404 (файл не найден) приведет к исключению. Лучший способ - обработать это исключение и использовать флаг, который можно установить, чтобы определить, существует файл или нет.
Пример кода выглядит следующим образом:
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!!!");
}
Вы можете поместить свой код в соответствующие блоки if. Надеюсь, это поможет!