在我的应用程序中,我使用 WebClient 类通过简单地调用 DownloadFile 方法从Web服务器下载文件 . 现在我需要在下载之前检查某个文件是否存在(或者我只是想确保它存在) . 我有两个问题:
检查服务器上是否存在文件而不通过网络传输大量数据的最佳方法是什么? (这是我需要检查的大量文件)
有没有办法在不下载的情况下获取给定远程文件的大小?
提前致谢!
WebClient 相当有限;如果切换到使用 WebRequest ,则可以发送HTTP HEAD请求 . 发出请求时,您应该收到错误(如果文件丢失),或者 WebResponse 具有有效的 ContentLength 属性 .
WebClient
WebRequest
WebResponse
ContentLength
Edit: 示例代码:
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块中 . 希望能帮助到你!
2 回答
WebClient
相当有限;如果切换到使用WebRequest
,则可以发送HTTP HEAD请求 . 发出请求时,您应该收到错误(如果文件丢失),或者WebResponse
具有有效的ContentLength
属性 .Edit: 示例代码:
当您使用 WebClient 类请求文件时,404错误(找不到文件)将导致异常 . 最好的方法是处理该异常并使用一个标志,可以设置该标志以查看该文件是否存在 .
示例代码如下:
您可以将代码放在相应的if块中 . 希望能帮助到你!