Мне нужно получить файл из виртуальных папок. У меня есть GetDocumentPreview.aspx, который может это сделать. Параметры - это тип URL. Ниже хорошего:
/GetDocumentPreview.aspx?name=filename&type=jpg
//But if I ask for file with #, &, + in name:
/GetDocumentPreview.aspx?name=&filename&type=jpg
/GetDocumentPreview.aspx?name=#filename&type=jpg
/GetDocumentPreview.aspx?name=+filename&type=jpg
У меня нет файла из-за символов #, &, + (я тестировал все символы).
Как передать параметр #, &, + в URL. Мне нужно использовать параметр URL, потому что я вызываю этот класс из всплывающей подсказки Javascript hover с изображениями.
Вам нужно избегать этих особых символов:
Эта функция делает это лучше всего:
Будьте осторожны, не используйте UrlEncode
Вы должны кодировать специальные символы, если вы помещаете их в URL-адрес.
Вы можете использовать HttpServerUtility.UrlEncode
в своем строковом URL, прежде чем помещать его в место перенаправления гиперссылок/кнопок. Примером может служить:
string destinationURL = "http://www.contoso.com/default.aspx?user=specialCharacters";
NextPage.NavigateUrl = "~/Finish?url=" + Server.UrlEncode(destinationURL);
В вашем случае вы должны UrlEncode имена файлов перед их помещением в строку URL, специальные символы, упомянутые, будут использоваться как:
& = %26
+ = %2B
Подробнее вы можете увидеть здесь: http://msdn.microsoft.com/en-us/library/zttxte6w(v=vs.110).aspx
Используйте urlencoded значение этих символов. Список можно найти здесь -
http://www.w3schools.com/tags/ref_urlencode.asp
например, &
будет - %26
.
Таким образом, /GetDocumentPreview.aspx?name=&filename&type=jpg
будет - /GetDocumentPreview.aspx?name=%26filename&type=jpg