URL в кодировке Asp не открывает документ - PullRequest
0 голосов
/ 27 июня 2019

У меня есть файл с именем "some name + other name.pdf", сохраненный на сервере, и я пытаюсь открыть его с помощью такого интерфейса:

 sbHtml.Append("<li class=\"list-group-item text-uppercase\"><span class=\"glyphicon glyphicon-link\" aria-hidden=\"true\"></span> <a href=\""
                            + (subsite + "Uploads/" + id + "/" + System.Uri.EscapeDataString(Common.NullValue(item["FileName"])) ) + "\" target=\"_blank\">" + Common.NullValue(item["Name"]) + "</a></li>");

После кодирования с помощью System.Uri.EscapeDataString я получаю следующее:

некоторые% 20name% 2Bother% 20name.pdf

Проблема заключается в том, что при нажатии на ссылку появляется ошибка сервера: файл 404 не найден. Как мне закодировать имя, чтобы я мог открыть его с сервера?

1 Ответ

0 голосов
/ 27 июня 2019

URL, который вы хотите использовать, содержит пробелы («какое-то имя»), «% 20» означает пробел.

Я думаю, вы должны заменить их в контроллере.Вы можете получить фактический URL -> Request.RawUrl или Request.Url.OriginalString.Еще один способ создать дополнительный столбец в таблице базы данных, например:

 ID | Name            | Sanitized
---------------------------------------
  1 | delicious Bread | delicious_bread
  2 | QWEERT-YXCC     | qeert_yxcc
  3 | Hello World!    | hello_world

Таким образом, вы можете выполнить поиск в Sanitized и вернуть исходное имя.

...