2010-03-14 11 views

Respuesta

4

Usted puede hacer esto:

var localPath = Server.MapPath("/foo/bar.txt"); 

See MSDN for details

+2

Mi programa no es una aplicación ASP.NET, ¿cómo obtengo acceso al objeto Servidor? – acdx

+0

@acdx - Estoy confundido entonces ... con respecto a qué, ¿una aplicación en ejecución? Su pregunta está etiquetada 'uri', por lo que estoy confundido si no es web, ¿explicar? –

+0

Me gustaría obtener una ruta de archivo relativa, como 'foo \ bar.txt', que pueda pasar a' Path.Combine' para crear una ruta de archivo absoluta. – acdx

74

ha intentado ya Server.MapPath?
o Uri.LocalPath propiedad? Algo así como lo siguiente:

string uriString = "file://server/filename.ext"; 
// Lesson learnt - always check for a valid URI 
if(Uri.IsWellFormedUriString(uriString)) 
{ 
    Uri uri = new Uri(uriString); 
    Console.WriteLine(uri.LocalPath); 
} 
+0

Esta solución funcionó para mí. –

+0

+1: Exactamente lo que estaba buscando, gracias. –

+0

@Binary, @Gareth, me alegro de que te haya ayudado. –

8

me di cuenta de esta manera para producir una ruta completa del sistema de archivos absoluta de una URI relativa o absoluta y una ruta de la base.

Con:

Uri basePathUri = new Uri(@"C:\abc\"); 

de un pariente URI:

string filePath = new Uri(basePathUri, relativeUri).AbsolutePath; 

Desde un URI absoluto:

// baseUri is a URI used to derive a relative URI 
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri); 
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath; 
Cuestiones relacionadas