2011-06-22 30 views
9

Quiero convertir esta ruta física "C:\bla\bla\Content\Upload\image.jpg" a la ruta del servidor como "/Content/Upload/image.jpg".¿Cómo obtener la ruta del servidor de la ruta física?

¿Cómo puedo hacer eso?

+0

¿Dónde? En el lado del cliente o del lado del servidor? – jsalonen

+0

@jsalonen - lado del servidor – Freshblood

+0

posible duplicado de [ruta absoluta ASP.NET de vuelta a la ruta relativa a la web] (http://stackoverflow.com/questions/3164/asp-net-absolute-path-back-to-web- relative-path) –

Respuesta

11

se puede usar algo así:

public static class Extensions  { 
     public static string RelativePath(this HttpServerUtility utility, string path, HttpRequest context) 
     { 
      return path.Replace(context.ServerVariables["APPL_PHYSICAL_PATH"], "/").Replace(@"\", "/"); 
     } 
    } 

y le llamaremos

Server.RelativePath(path, Request); 
+0

¿No es esto lo contrario de lo que pidió OP? – GvS

+0

Lo siento, reescribo la respuesta –

+2

gracias, es una buena solución pero prefiero usar HttpServerUtilityBase en lugar de HttpServerUtility abnd HttpRequestBase en lugar de HttpRequestBase. trabajando bien también –

2

puede hacer lo siguiente para obtener la ruta relativa.

String filePath = @"C:\bla\bla\Content\Upload\image.jpg"; 

String serverPath = Request.PhysicalPath; 
String relativePath = filePath.Substring(serverPath.Length, filePath.Length - serverPath.Length); 
Cuestiones relacionadas