在我写的c#类中,我有一个照片属性,如果图像存在则返回照片源(否则为默认图像)。在我的代码中,我使用:
public string Photo
{
get
{
string source = "~/images/recipes/" + id + ".jpg";
if (File.Exists(source))
return "~/images/recipes/" + id + ".jpg";
else
return "";
}
}
如果我收到此图像的FileInfo()信息,我看到我试图在以下目录中找到此图像: C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ 〜\图像\配方
当然图像不在该目录中,而File.Exists正在返回错误的值。但我该如何解决这个问题呢?
答案 0 :(得分:11)
试试这个:
if(File.Exists(System.Web.HttpContext.Current.Server.MapPath(source)))
答案 1 :(得分:2)
您需要将相对路径映射回物理路径:
string source = HttpContext.Current.Server.MapPath("~/images/recipes/" + id + ".jpg");
答案 2 :(得分:0)
你必须使用:
Server.MapPath(source)
因为你无法100%确定代码的运行位置,即。它在开发和生产服务器上会有所不同。你还确定〜/在windows中工作吗?不会被解释为名为〜的目录吗?除非那就是你想要的。