2014-12-22 3 views
0

Следующий код не работает должным образом, если в имени файла есть пробел. Uri.AbsolutePath ускользает строку, в результате чего отображенной пути на диске также включая ненужные экранированные символы:Работа с экранированными пространствами при использовании Server.MapPath в URI

var uri = new Uri("http://localhost/my file.txt"); 
var pathOnDisk = HttpContext.Current.Server.MapPath(uri.AbsolutePath); 
// Resulting incorrectly in "C:\MyWebsite\my%20file.txt" 

без отводом вокруг, и с использованием официального решения не string.replace, как можно получить неэкранированный путь от uri или, альтернативно, сопоставить путь к диску без использования экранированных символов?

+0

вы должны найти подстроку, где пространство и заменить его String.Empty – SuncoastOwner

ответ

0

Просто расшифровать:

var uri = new Uri("http://localhost/my file.txt"); 
var pathOnDisk = HttpContext.Current.Server.MapPath(uri.AbsolutePath); 
var decoded = HttpContext.Current.Server.UrlDecode(pathOnDisk); 
Смежные вопросы