method examples ejemplos downloaddata c# .net-2.0 system.net winapp

ejemplos - webclient examples c#



Uri.AbsolutePath arruina la ruta con espacios (5)

En una WinApp, simplemente estoy tratando de obtener la ruta absoluta desde un objeto Uri:

Uri myUri = new Uri(myPath); //myPath is a string //somewhere else in the code string path = myUri.AbsolutePath;

Esto funciona bien si no hay espacios en mi ruta original. Si hay espacios ahí, la cuerda se destroza; por ejemplo, ''Documentos y configuraciones'' se convierte en ''Documentos% 20 y% 20Configuración'', etc.

¡Cualquier ayuda sería apreciada!

EDITAR: ¡ LocalPath en lugar de AbsolutePath hizo el truco!


Esta es la forma en que se supone que es. Eso se llama codificación URL. Se aplica porque los espacios no están permitidos en las URL.

Si desea que la ruta vuelva con espacios incluidos, debe llamar a algo como:

string path = Server.URLDecode(myUri.AbsolutePath);

No se le debe exigir que importe nada para usarlo en una aplicación web. Si obtiene un error, intente importar System.Web.HttpServerUtility. O bien, puedes llamarlo así:

string path = HttpContext.Current.Server.URLDecode(myUri.AbsolutePath);


Lo está codificando como debería, probablemente podrías URLDecortarlo para recuperarlo con espacios, pero no está "destrozado" porque está codificado correctamente.

No estoy seguro de lo que estás escribiendo, pero para convertirlo en asp.net es Server.UrlDecode (ruta). También es posible que pueda utilizar LocalPath, en lugar de AbsolutePath, si se trata de una aplicación de Windows.


Uri también tiene un par de métodos estáticos: EscapeDataString y EscapeUriString.

Uri.EscapeDataString(uri.AbsolutePath) también funciona


Simplemente use uri.LocalPath en su lugar


Use HttpUtility:

HttpUtility.UrlDecode(uri.AbsolutePath)