C# 如何检查ASP.NET MVC 4中是否存在文件
我正在开发一个C# 如何检查ASP.NET MVC 4中是否存在文件,c#,asp.net-mvc-4,relative-path,C#,Asp.net Mvc 4,Relative Path,我正在开发一个ASP.netmvc4应用程序。我允许用户上传文件,但我想在服务器上用不同的名称保存它们,因此我创建了helper方法,该方法应返回要使用的GUID。尽管这可能永远不会发生,但我仍想检查是否有一个文件具有相同的GUID名称,因此我将此作为代码: public static string GetUniqueName(string pathToFile) { bool IsUnique = false; string gu
ASP.netmvc4
应用程序。我允许用户上传文件,但我想在服务器上用不同的名称保存它们,因此我创建了helper方法,该方法应返回要使用的GUID
。尽管这可能永远不会发生,但我仍想检查是否有一个文件具有相同的GUID
名称,因此我将此作为代码:
public static string GetUniqueName(string pathToFile)
{
bool IsUnique = false;
string guid = null;
while (!IsUnique)
{
guid = Guid.NewGuid().ToString("N");
var path = System.IO.Path.Combine(pathToFile, "login.jpg");
if (!System.IO.File.Exists(path))
{
IsUnique = true;
}
}
return guid;
}
正如您所看到的,文件名是硬编码的,仅用于测试目的,因为我知道有这样的文件
要保存文件,我使用以下命令:
var path = System.IO.Path.Combine(Server.MapPath("~/Content/NewsImages"), fileName);
而且工作正常。因此,当我尝试调用静态方法时,我通过如下方式传递仲裁:
string test = Helper.GetUniqueName("~/Content/NewsImages");
但在调试中我看到了这一点
System.IO.Path.Combine(pathToFile, "login.jpg");
返回~/Content/newsmages\\login.jpg
,因此我决定更改传递给的参数:
string test = Helper.GetUniqueName("~\\Content\\NewsImages");
现在会产生~\\Content\\newsmages\\login.jpg
,看起来不错,但随后会出现:
if (!System.IO.File.Exists(path))
{
IsUnique = true;
}
我通过了检查,即使我知道我要检查的目录中存在这样一个文件。如何解决此问题?调用应使用的帮助器方法时,这将从虚拟路径转换为物理路径,例如
string test = Helper.GetUniqueName(Server.MapPath("~/Content/NewsImages"));
谢谢,它修好了道路。现在它相应地返回正确的结果。