File.Exists(file)为false但文件存在

时间:2013-04-22 09:46:05

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

我在一个控制器和另一个控制器中添加一个文件,我想检查文件是否存在。我使用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>
        }

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您是否检查了权限?

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

然而,最有可能是@Obama回答有关错误的路径,因为你没有调用Server.MapPath