我使用C#列出pdf文件,但有些文件因为文件名上有百分号(%
)而无法打开,用户仍希望%
显示在文件名上,但是我无法让它发挥作用。
DirectoryInfo directory = new DirectoryInfo("mydirectory/News Files");
FileSystemInfo[] files = directory.GetFiles("*.pdf");
var orderedFiles = files.OrderByDescending(f => f.Name);
foreach (FileSystemInfo file in orderedFiles)
{
var link = new HyperLink { ID = file.FullName };
link.NavigateUrl ="/News Files/"+ file.Name;
link.Text = Regex.Split(file.Name, ".pdf")[0];
link.CssClass = "linkpdf";
newsListContainer.Controls.Add(link);
}
但是这个名为my20%sign.pdf
的代码文件无法在浏览器中打开。
答案 0 :(得分:2)
您可以尝试Uri.EscapeUriString
。
此外,您不应使用/
的字符串连接构建网址/文件名。您通常应该使用Uri /文件名解析库,例如Uri
类
答案 1 :(得分:1)
这并不奇怪。浏览器将%20解释为“空格”,因为它是url编码的等效值。因此,如果您的文件名为“My%20File.pdf”,浏览器将解码该网址并实际查找“我的文件.pdf”。
如需进一步参考,请查看:http://www.w3schools.com/tags/ref_urlencode.asp
答案 2 :(得分:0)
您可以将%20
替换为" ". filename.replace("%20"," ");