如何处理上传文件名中的空格

时间:2011-04-27 19:58:14

标签: .net

我的应用程序可以接受带有文件名空格的上传文件。问题是,当我生成这些文件的超链接时,文件名中的空间实际上阻止了我这样做。

DirectoryInfo di = new DirectoryInfo("e:/asdf");
FileInfo[] rgFiles = di.GetFiles("*.*");
if (rgFiles != null)
{
    sb.Append("<span class='SubTitle'>Your attachments list:</span>");
    foreach (FileInfo fi in rgFiles)
    {
       sb.Append("<br><a href=e:\\asdf\\" + fi.Name + ">" + fi.Name + "</a>");
    }
}
else
{
    sb.Append("You don't have any attachment yet.");
}

Shoud我将所有空格替换为下划线?好吧,我不喜欢这样。但是如果我想在fi.name中添加引号,它将不会显示任何文件名。

3 个答案:

答案 0 :(得分:1)

只需UrlEncode文件名。它将使用有效的URL等效项(%20+)替换空格。

sb.FormatAppend("<br><a href=e:\\asdf\\{0}>{1}</a>", 
                HttpUtility.UrlEncode(fi.Name),
                fi.Name);

答案 1 :(得分:1)

你应该在整个网址上加上引号:

foreach (FileInfo fi in rgFiles)
{
   sb.Append("<br><a href='e:\\asdf\\" + fi.Name + "'>" + fi.Name + "</a>");
}

这样,如果您的路径有空格,结果HTML将如下所示:

<br><a href='e:\asdf\your file name.txt'>your file name.txt</a>

答案 2 :(得分:0)

空格可以在HTML中表示为%20。尝试用它替换它们。

但理想情况下,您应该使用XML / HTML解析器转义名称。