【问题标题】:File.Exists(file) is false but file existFile.Exists(file) 为假但文件存在
【发布时间】:2013-04-22 09:46:05
【问题描述】:

我在一个控制器中添加一个文件,在另一个控制器中我想检查该文件是否存在。我使用File.Exist(file),但它总是错误的,即使文件存在......

我添加文件,图片添加成功。

if ((image!= null & image.ContentLength > 0))
                    {
                        string name = event.EventId.ToString() + ".jpg";

                        var fileName = name;
                        var path = Path.Combine(Server.MapPath("~/App_Data/Plakaty"), fileName);
                        plakat.SaveAs(path);
                    }

如果此文件存在,我正在检查另一个控制器:

string file = "~/App_Data/Plakaty/" + wyd.EventId.ToString() + ".jpg";

            ViewBag.file_exist = System.IO.File.Exists(file); //always is false

我的观点:(它只返回“无文件”)

 @if (ViewBag.file_exist == true)
        {
            <p>File exist</p>
        }
        else
        {
            <p>No file</p>
        }

【问题讨论】:

  • 您没有在另一个控制器中调用 Server.MapPath - 这是否意味着您的文件路径不正确?
  • @Charleh:我认为您应该将其发布为答案。
  • 奥巴马需要积分:)
  • @Charleh 不不,我没有看到你的评论,抱歉 :)

标签: c# file asp.net-mvc-4


【解决方案1】:

检查文件时需要再次输入Server.MapPath并输入正斜杠。

string file = Server.MapPath("~") + @"\App_Data\Plakaty\" 
    + wyd.EventId.ToString() + ".jpg";

ViewBag.file_exist = System.IO.File.Exists(file ); //always is false

【讨论】:

  • 你确定正斜杠吗,afaik WinApi 在大多数地方也可以处理/
【解决方案2】:

检查文件是否存在时忘记写Server.MapPath

【讨论】:

    【解决方案3】:

    您检查过权限吗?

    如果在尝试确定指定文件是否存在时发生任何错误,Exists 方法将返回 false。这可能发生在引发异常的情况下,例如传递包含无效字符或过多字符的文件名、磁盘故障或丢失,或者调用者没有读取文件的权限。 See documentation

    但很可能是@Obama 回答的路径错误,因为您没有调用 Server.MapPath

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2020-01-06
      • 2014-02-27
      • 2010-10-29
      • 2012-10-22
      • 2019-12-30
      • 1970-01-01
      相关资源
      最近更新 更多