0

我正在使用 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);
}

但是这个名称为like的代码文件my20%sign.pdf不会在浏览器中打开。

4

3 回答 3

2

你可以试试Uri.EscapeUriString

此外,您不应该使用与/. 您通常应该使用 Uri/文件名解析库,例如Uri

于 2011-03-23T08:27:53.660 回答
1

这并不奇怪。%20 被浏览器解释为“空白”,因为它是 url 编码的等效值。因此,如果您的文件名为“My%20File.pdf”,浏览器将解码 url 并实际查找“My File.pdf”。

如需进一步参考,请查看:http ://www.w3schools.com/tags/ref_urlencode.asp

于 2011-03-23T08:30:00.883 回答
0

您可以替换%20" ". filename.replace("%20"," ");

于 2011-03-23T09:05:09.437 回答