以下是我创建文件的方式:
System.IO.File.Create(Server.MapPath("..") + name + ".html");
但有时名字有来自瑞典字母表的非法字符,如å。如何保存?它可以直接使用,但是当我使用代码时会出错。
答案 0 :(得分:3)
如果路径是用户控制的并且可能包含无效的文件系统字符,那么您需要让用户更改名称或以确定的方式规范化坏字符。一种方法是用say下划线替换所有无效字符。
public static string NormalizeFileName(string input) {
var invalid = Path.GetInvalidPathChars();
var builder = new System.Text.StringBuilder();
foreach(char c in input) {
if (invalid.Contains(c)) {
builder.Append('_');
} else {
builder.Append(c);
}
}
return builder.ToString();
}
然后您可以按如下方式使用此功能
var originalName = Server.MapPath("..") + name + ".html";
var normalizedName = NormalizeFileName(originalName);
System.IO.File.Create(normalizedName);
修改强>
正如一些人所指出的,最好在这里使用Path.Combine
来组合目录和文件名。
var originalName = Path.Combine(Server.MapPath(".."), name + ".html");
答案 1 :(得分:0)
System.IO.File.Create(Server.MapPath("..") + "\\" + name + ".html");