如何使用C#检查是否存在远程文件

时间:2009-09-18 09:04:55

标签: c# asp.net

如何在ASP.Net中的Web位置检查文件是否存在(在不同的Web应用程序中,但是在同一Web服务器中),目前我这样做。有没有更好的方法呢?

using (WebClient client = new WebClient())
{
            try
            {
                Stream stream = client.OpenRead("http://localhost/images/myimage.jpg");
                if (stream != null)
                {
                    //exists
                }
            }
            catch
            {
                //Not exists
            }
}

4 个答案:

答案 0 :(得分:2)

请记住,你永远不会对文件的存在做出100%明确的回应,但我这样做的方式与你的非常相似......

bool remoteFileExists(string addressOfFile)
{
    try
    {
        HttpWebRequest request = WebRequest.Create(addressOfFile) as HttpWebRequest;
        request.Method = "HEAD";
        request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
        var response = request.GetResponse() as HttpWebResponse;
        return (response.StatusCode == HttpStatusCode.OK);  
    }
    catch(WebException wex)
    {
        return false;
    }
}

编辑::查看Anton Gogolev上面的编辑(How can one check to see if a remote file exists using C#)我应该将响应转换为HttpWebResponse对象并检查状态代码。编辑代码以反映

答案 1 :(得分:1)

如果可以通过HTTP访问文件,则可以使用HttpWebRequest为该特定URL发出HTTP HEAD请求。如果HttpWebResponse.StatusCode为200,那么文件就在那里。

编辑:请参阅this,了解为什么GetResponse在实际上不应该执行此操作时抛出愚蠢的异常。

答案 2 :(得分:0)

您可以使用Server.MapPath获取目录,然后使用IO标准方法(如File.Exists)检查文件是否存在

答案 3 :(得分:-1)

404或Not Found错误消息是HTTP标准响应代码,表示客户端能够与服务器通信但服务器无法找到所请求的内容。 404错误表示将来可能会提供所请求的资源。

您可以使用HEAD请求(HttpWebRequest.Method =“HEAD”)