File Exists总是返回false
本文关键字:返回 false Exists File | 更新日期: 2023-09-27 18:07:16
ImageURL = String.Format(@"../Uploads/docs/{0}/Logo.jpg", SellerID);
if (!File.Exists(ImageURL))
{
ImageURL = String.Format(@"../Uploads/docs/defaultLogo.jpg", SellerID);
}
每次我检查是否有文件,我在图像中得到默认的徽标,是否有超出权限检查的东西。
注意:这是在网站
上引用的类库
您必须给出物理路径而不是虚拟路径(url),您可以使用webRequest来查找给定url
上是否存在文件。你可以阅读这篇文章,看看不同的方法来检查资源在给定的url是否存在。
private bool RemoteFileExists(string url)
{
try
{
//Creating the HttpWebRequest
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
//Setting the Request method HEAD, you can also use GET too.
request.Method = "HEAD";
//Getting the Web Response.
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
//Returns TURE if the Status code == 200
return (response.StatusCode == HttpStatusCode.OK);
}
catch
{
//Any exception will returns false.
return false;
}
}
根据注释编辑, 在托管url访问的文件的服务器上运行代码。我猜你的上传文件夹在网站目录的根目录。
ImageURL = String.Format(@"/Uploads/docs/{0}/Logo.jpg", SellerID);
if(!File.Exists(System.Web.Hosting.HostingEnvironment.MapPath(ImageURL))
{
}
如果这是在一个web应用程序中,当前目录通常不是你想的那样。例如,如果IIS正在提供网页,则当前目录可能是inetsrv.exe所在的目录或临时目录。要获得web应用程序的路径,可以使用
string path = HostingEnvironment.MapPath(@"../Uploads/docs/defaultLogo.jpg");
bool fileExists = File.Exists(path);
http://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.mappath.aspx MapPath将把你给它的路径转换成与你的web应用程序相关的东西。为了确保正确设置了路径,您可以使用Trace.Write
跟踪调试或将路径写入调试文件(使用调试文件的绝对路径)。