如何使用c#和WebClient类检查服务器上是否存在文件

Mat*_*ats 20 c# webclient http file exists

在我的应用程序中,我使用WebClient类通过简单地调用DownloadFile方法从Web服务器下载文件.现在我需要在下载之前检查某个文件是否存在(或者我只是想确保它存在).我有两个问题:

  1. 在不通过线路传输大量数据的情况下检查服务器上是否存在文件的最佳方法是什么?(这是我需要检查的大量文件)
  2. 有没有办法在不下载的情况下获取给定远程文件的大小?

提前致谢!

Tim*_*son 41

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);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

当您使用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!!!");
}
Run Code Online (Sandbox Code Playgroud)

您可以将代码放在相应的 if 块中。希望能帮助到你!