使用C#列出文件,%wont打开的文件

时间:2011-03-23 08:21:44

标签: c# asp.net file-listing

我使用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的代码文件无法在浏览器中打开。

3 个答案:

答案 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"," ");