C# 및 WebClient 클래스를 사용하여 서버에 파일이 있는지 확인하는 방법

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

문제

내 응용 프로그램에서 나는 사용한다 웹 클라이언트 클래스는 단순히 호출하여 웹 서버에서 파일을 다운로드합니다. 다운로드 파일 방법. 이제 특정 파일을 다운로드하기 전에 특정 파일이 존재하는지 확인해야합니다 (또는 그것이 존재하는지 확인하려면). 두 가지 질문이 있습니다.

  1. 와이어를 통해 많은 데이터로 전송하지 않고 서버에 파일이 존재하는지 확인하는 가장 좋은 방법은 무엇입니까? (확인해야 할 파일이 상당히 많습니다)
  2. 다운로드하지 않고 주어진 원격 파일의 크기를 얻는 방법이 있습니까?

미리 감사드립니다!

도움이 되었습니까?

해결책

WebClient 상당히 제한적입니다. 사용으로 전환하는 경우 WebRequest, 그런 다음 HTTP 헤드 요청을 보낼 수 있습니다. 요청을 발행하면 오류 (파일이 누락 된 경우) 또는 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);
}

다른 팁

당신이 그것을 사용하여 파일을 요청할 때 웹 클라이언트 클래스, 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 블록에 넣을 수 있습니다. 도움이되기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top