如何在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
}
}
答案 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”)