c# - 文件存在总是返回 false

标签 c# .net image url

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

每次检查是否有文件时,我都会得到图像中的默认 Logo ,是否有超出权限的内容无法检查。

Note: this is class library referenced on website

最佳答案

您必须提供物理路径而不是虚拟路径(url),您可以使用 webRequest 来查找给定 url 上是否存在文件。您可以阅读此article查看检查给定 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))
{

}

关于c# - 文件存在总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15803527/

相关文章:

c# - asp.net c#如何处理null?

.net - 未找到命名空间网络

在 OpenGL ES 2.0 中将字节数组转换为图像

php - 无法显示源图像。 PHP/MYSQL

c# - nhibernate 有什么,那个 Entity Framework 4 不见了?

c# - LINQ 选择包含字符串的所有子集合的所有项目

c# - 为什么 Entity Framework 会尝试插入现有实体?

c# - 如何将可枚举类型转换为 AsyncEnumerable 类型?

c# - Dapper 读取 SqlHierachyId 列(SQL Server 2008 R2)

javascript - JS脚本将 latex 公式转换为单个图像