2
ImageURL = String.Format(@"../Uploads/docs/{0}/Logo.jpg", SellerID);
if (!File.Exists(ImageURL))
{
    ImageURL = String.Format(@"../Uploads/docs/defaultLogo.jpg", SellerID);
}

每次我检查是否有文件时,我都会在图像中获得默认徽标,是否有超出权限检查的内容。

注意:这是网站上引用的类库

4

2 回答 2

4

您必须提供物理路径而不是虚拟路径(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))
{

}
于 2013-04-04T05:56:32.840 回答
2

如果这是在 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或将路径写入调试文件(使用调试文件的绝对路径)。

于 2013-04-04T06:39:07.607 回答