#.net
#.net
Вопрос:
Мое приложение может принимать загружаемые файлы с пробелами в именах файлов. Проблема в том, что когда я создаю гиперссылку на эти файлы, пробел в их именах файлов действительно мешал мне делать это.
DirectoryInfo di = new DirectoryInfo("e:/asdf");
FileInfo[] rgFiles = di.GetFiles("*.*");
if (rgFiles != null)
{
sb.Append("<span class='SubTitle'>Your attachments list:</span>");
foreach (FileInfo fi in rgFiles)
{
sb.Append("<br><a href=e:\asdf\" fi.Name ">" fi.Name "</a>");
}
}
else
{
sb.Append("You don't have any attachment yet.");
}
Должен ли я заменить все пробелы подчеркиванием? Ну, мне не нравится этот способ. Но если я хочу добавить цитату в fi.name он не будет отображать никаких имен файлов.
Комментарии:
1. Не могли бы вы пояснить немного больше: почему вы не можете добавить кавычки вокруг URL-адреса? Т.е.:
sb.Append("<br><a href='e:\asdf\" fi.Name "'>" fi.Name "</a>");
(обратите внимание на одинарные кавычки)
Ответ №1:
Вы должны заключить весь URL в кавычки:
foreach (FileInfo fi in rgFiles)
{
sb.Append("<br><a href='e:\asdf\" fi.Name "'>" fi.Name "</a>");
}
Таким образом, если ваш путь содержит пробелы, результирующий HTML-код будет выглядеть следующим образом:
<br><a href='e:asdfyour file name.txt'>your file name.txt</a>
Комментарии:
1. Черт, я должен добавить цитату в нужное место, которую я добавил раньше </ a> , вот почему она не отображает ничего, как я сказал в своем сообщении. Ты молодец! Человек.
Ответ №2:
Просто UrlEncode
имя файла. Он заменит пробелы допустимыми эквивалентами URL (
или
).
sb.FormatAppend("<br><a href=e:\asdf\{0}>{1}</a>",
HttpUtility.UrlEncode(fi.Name),
fi.Name);
Комментарии:
1. Чувак, это не работает, например, имя файла «CC AP и Svc Pkg-FCRA March 2011.pdf» будет закодировано в «CC AP и Svc Pkg-FCRA March 2011.pdf». В настоящее время, когда вы нажимаете на ссылку, серверу не удается найти файл с именем «CC AP и SVC Pkg-FCRA Март 2011.pdf»
2. @Steven — Похоже, вы пытаетесь получить доступ к локальному файлу. Почему вы не используете
file://
схему URI ?3. На самом деле местоположение находится на другом сервере, я сопоставил путь. Но это не имеет ничего общего с именем файла. В любом случае, спасибо за вашу помощь.
Ответ №3:
Пробелы могут быть представлены как
в HTML. Попробуйте заменить их этим.
Но в идеале вы должны избегать имен с помощью синтаксического анализатора XML / HTML.
Комментарии:
1. Не работает, чувак, после замены пробела на он по-прежнему не может найти файл.