2011-05-24 59 views
3
FileInfo[] FileList1 = Dir.GetFiles("*.doc", SearchOption.AllDirectories); 
foreach (FileInfo FI in FileList1) 
{ 
    Response.Write(
     "<td><a href= view5.aspx?file=" + strheadlinesid + "\\" + 
     FI.Name + " target=_self;> " +FI.Name + "</a></td>"); 
} 

当我试图用空格打印文件名时,会在文件名空间中添加'#',这会给我造成问题。 任何人都可以告诉解决方案导致问题的文件名空间

回答

5

URL编码可确保所有浏览器都能正确地传输URL字符串中的文本。诸如问号(?),&符号(&),斜杠标记(/)和空格之类的字符可能会被某些浏览器截断或损坏。因此,这些字符必须以标记或查询字符串编码,其中字符串可以由浏览器在请求字符串中重新发送。

fileName = HttpServerUtility.UrlEncode(fileName); 
+0

只有在这种情况下会自动发生,因为浏览器会自动URLEncode链接。用户忘了添加引号。 – 2011-05-24 07:31:17

+0

你能否详细说明你的答案。我无法理解。 – Naresh 2011-05-24 07:59:48

+0

如果您知道可能包含特殊字符的发送文本,请始终对其进行Url编码。 – Magnus 2011-05-24 08:25:23

2

尝试使用引号!

FileInfo[] FileList1 = Dir.GetFiles("*.doc", SearchOption.AllDirectories); 
foreach (FileInfo FI in FileList1) 
{ 
    Response.Write(
     "<td><a href=\"view5.aspx?file=" + strheadlinesid + "\\" + 
     FI.Name + "\" target=\"_self\"> " +FI.Name + "</a></td>"); 
}