Как указать адресное пространство в имени загружаемого файла

#.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. Не работает, чувак, после замены пробела на он по-прежнему не может найти файл.