Tengo archivos xml que contienen rutas de archivo href a imágenes (por ejemplo, ".... \ images \ image.jpg"). Los hrefs contienen rutas relativas. Ahora, necesito extraer los hrefs de las imágenes y convertirlos en rutas absolutas en el sistema de archivos.
Sé sobre el método GetFullPath, pero lo probé y solo parece funcionar desde el conjunto CurrentDirectory, que parece ser C: así que no veo cómo podría usarlo. Y aún así, tengo la ruta absoluta del archivo que contiene los hrefs y las rutas relativas de href, así que, dado que es una tarea simple para mí, contar el número de partes ".... \" basado en la ruta absoluta el archivo que lo contiene, parece que también debe haber una forma de hacerlo mediante programación.
¡Espero que haya algún método simple que simplemente no conozca! ¿Algunas ideas?
fuente
Respuestas:
Suponiendo que conozca el directorio real en el que se encuentra el archivo XML, use Path.Combine, eg
var absolute_path = Path.Combine(directoryXmlLivesIn, "..\images\image.jpg");
Si desea recuperar la ruta completa con cualquier ... colapsado, puede usar:
Path.GetFullPath((new Uri(absolute_path)).LocalPath);
fuente
(new Uri(absolute_path)).LocalPath
hace lo mismo, porPath.GetFullPath(absolute_path)
lo que uno u otro debería ser suficiente.Gets a local operating-system representation of a file name.
que, en este caso, no se espera un manejo especial.string exactPath = Path.GetFullPath(yourRelativePath);
trabajos
fuente
Esto funcionó.
var s = Path.Combine(@"C:\some\location", @"..\other\file.txt"); s = Path.GetFullPath(s);
fuente
¡Es la mejor manera de convertir la ruta relativa en la ruta absoluta!
string absolutePath = System.IO.Path.GetFullPath(relativePath);
fuente
Puede usar Path.Combine con la ruta "base", luego GetFullPath en los resultados.
string absPathContainingHrefs = GetAbsolutePath(); // Get the "base" path string fullPath = Path.Combine(absPathContainingHrefs, @"..\..\images\image.jpg"); fullPath = Path.GetFullPath(fullPath); // Will turn the above into a proper abs path
fuente
¿Has probado el
Server.MapPath
método? Aquí hay un ejemplostring relative_path = "/Content/img/Upload/Reports/59/44A0446_59-1.jpg"; string absolute_path = Server.MapPath(relative_path); //will be c:\users\.....\Content\img\Upload\Reports\59\44A0446_59-1.jpg
fuente
Esto funcionó para mí.
//used in an ASP.NET MVC app private const string BatchFilePath = "/MyBatchFileDirectory/Mybatchfiles.bat"; var batchFile = HttpContext.Current.Server.MapPath(BatchFilePath);
fuente
Eche un vistazo a
Path.Combine
http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspxfuente