System.IO.File.Exists()返回false

时间:2012-08-02 07:15:58

标签: asp.net-mvc-3 file-io

我有一个页面,我需要显示存储在服务器上的图像。要查找该图像,我使用以下代码:

 if (System.IO.File.Exists(Server.MapPath(filepath)))

当我使用它时,我会得到一个正确的结果,因为文件存在。

但是当我给出如下的绝对路径时:

 if (System.IO.File.Exists("http://myserever.address/filepath"))

返回false。

该文件实际存在于那里,但我不知道为什么找不到它。

2 个答案:

答案 0 :(得分:2)

System.IO.File.Exists的path参数是文件系统中实际文件的路径。

对Server.MapPath()的调用将URI更改为实际的文件路径。

所以它按预期工作。

答案 1 :(得分:1)

您无法在File.Exists中使用HTTP路径。它支持网络共享和本地文件系统。如果要在服务器端的Web应用程序中执行此操作。首先首先使用Server.MapPath()查找物理位置,然后使用File.Exists。

在此处阅读Server.MapPathhttp://msdn.microsoft.com/en-us/library/ms524632%28v=vs.90%29.aspx

例如

string filePath = ResolveUrl("~/filepath/something.jpg");

if (File.Exists(Server.MapPath(filePath)))
{
     //Do something. 
}