检查asp.net mvc 5中是否存在文件

Ari*_*ule 12 c# asp.net-mvc file

我正在检查是否存在无法找到它的文件,无论它是否存在

if (System.IO.File.Exists("~/files/downloads/" + fileCode + ".pdf"))
            {
                return File("~/files/downloads/" + fileCode, "application/pdf", Server.UrlEncode(fileCode));
            }
            else
            {
                return View("ErrorNotExistsView");
            }
Run Code Online (Sandbox Code Playgroud)

如何修改代码以正确检查文件是否存在?

And*_*erd 39

System.IO.File如果提供绝对路径或相对路径,则会起作用.相对路径不是相对于HTML根文件夹,而是相对于当前工作目录.当前工作目录将是一个值C:\Program Files (x86)\IIS Express.

~文件路径开头的字符仅被解释为当前ASP.NET上下文的一部分,File方法一无所知.

这里帮助你的方法是HttpServerUtility.MapPath

如果您使用的是控制器方法,则可以在对象上调用此方法HttpContext.Server,否则(例如在视图中)可以使用HttpContext.Current.Server.

 var relativePath = "~/files/downloads/" + fileCode + ".pdf";
 var absolutePath = HttpContext.Server.MapPath(relativePath);
 if(System.IO.File.Exists(absolutePath)) ....
Run Code Online (Sandbox Code Playgroud)