вывод списка файлов с использованием C #, файл с% wont open - PullRequest
0 голосов
/ 23 марта 2011

Я перечисляю pdf-файлы, используя C #, но некоторые файлы не открываются, потому что в именах их файлов есть знаки процента (%), пользователь все еще хочет, чтобы в имени файла отображалась %, но я не могу заставить его работать.

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 ]

2 голосов
/ 23 марта 2011

Вы можете попробовать Uri.EscapeUriString.

Кроме того, вы не должны создавать URL / имена файлов с использованием конкатенации строк с /.Обычно вы должны использовать библиотеку разбора Uri / имени файла, такую ​​как Uri class

1 голос
/ 23 марта 2011

Это не удивительно. % 20 интерпретируется браузером как «пробел», так как это эквивалентное значение в кодировке URL. Поэтому, если ваш файл называется «My% 20File.pdf», браузер декодирует URL-адрес и фактически ищет «My File.pdf».

Для дальнейшей справки, проверьте это: http://www.w3schools.com/tags/ref_urlencode.asp

0 голосов
/ 23 марта 2011

Вы можете заменить %20 на " ". filename.replace("%20"," ");

...