c#文件路径中的非法字符

时间:2014-05-22 08:13:08

标签: c# asp.net-mvc model-view-controller path

嘿伙计我有这段代码首先在变量中存储一个路径,检查该路径是否存在,如果没有创建它。然后采取该路径并将我的文件名添加到它。

这是代码

appData = string.Format("{0}{1}\"", controller.Server.MapPath("~/App_Data/"), Guid.NewGuid().ToString());

if (!Directory.Exists(appData))
    Directory.CreateDirectory(appData);

filePath = string.Format("{0}\"{1}", appData, model.File.FileName);
model.File.SaveAs(filePath);
data.Add("attachment", filePath);

但是当它到达SaveAs函数时,它会说明

Illegal character in path
  

AppDath = C:\ Users \ Ben \ Documents \ Team Foundation Server \ Team   项目\共享\果园   1.6 \果园\ SRC \ Orchard.Web \程序App_Data \ 392216b5-32ad-41f4-82bf-e074b13f25df \"

知道为什么吗?

2 个答案:

答案 0 :(得分:4)

使用Path.Combine

filePath = Path.Combine(appData, model.File.FileName);

创建appData路径

appData = Path.Combine(controller.Server.MapPath("~/App_Data"), Guid.NewGuid().ToString());

答案 1 :(得分:1)

使用

filePath = string.Format(@"{0}\"{1}", appData, model.File.FileName);

@ char显示编译器该字符串没有任何反斜杠字符。 Normaly,您在某些特殊字符中使用\前缀,例如\n表示换行符。您的字符串有\,因此编译器会尝试使用字符串中的下一个字符来解析它。

另一种方法是使用第二个来逃避反斜杠,如下所示:

filePath = string.Format(@"{0}\\"{1}", appData, model.File.FileName);