2014-05-22 44 views
1

嘿家伙我有这段代码将首先在变量中存储路径,检查该路径是否存在,如果不创建它。然后采取该路径并添加我的文件名称。c#文件路径中的非法字符

下面是代码

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); 

但是,当它到达另存为功能它规定

Illegal character in path 

AppDath = C:\用户\本\文档\的Team Foundation Server \团队 Projects \ Shared \ Orchard 1.6 \ Orchard \ src \ Orchard.Web \ App_Data \ 392216b5-32ad-41f4-82bf-e074b13f25df \“

任何想法为什么?

回答

4

使用Path.Combine

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

同样创造appData路径

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

我修复了像s这样的appData变量o“appData = string.Format(”{0} {1}“,controller.Server.MapPath(”〜/ App_Data /“),Guid.NewGuid()。ToString());”然后我的文件路径工作:) – Canvas

+2

@Canvas更好的做法是不使用String.Format来结合路径...当你有一个专用的方法;) –

1

使用

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

@字符显示,字符串没有任何反斜杠字符的编译器。 通常,您在某些特殊字符中使用\前缀,如\n表示换行符。你的字符串有一个\,所以编译器试图用字符串中的下一个字符来解决它。

另一种方法是使用第二个转义反斜线,像这样:

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

尝试当它打破创建appData位置 – Canvas