C# 및 WebClient 클래스를 사용하여 서버에 파일이 있는지 확인하는 방법
문제
내 응용 프로그램에서 나는 사용한다 웹 클라이언트 클래스는 단순히 호출하여 웹 서버에서 파일을 다운로드합니다. 다운로드 파일 방법. 이제 특정 파일을 다운로드하기 전에 특정 파일이 존재하는지 확인해야합니다 (또는 그것이 존재하는지 확인하려면). 두 가지 질문이 있습니다.
- 와이어를 통해 많은 데이터로 전송하지 않고 서버에 파일이 존재하는지 확인하는 가장 좋은 방법은 무엇입니까? (확인해야 할 파일이 상당히 많습니다)
- 다운로드하지 않고 주어진 원격 파일의 크기를 얻는 방법이 있습니까?
미리 감사드립니다!
해결책
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 블록에 넣을 수 있습니다. 도움이되기를 바랍니다!
제휴하지 않습니다 StackOverflow