jueves, 25 de marzo de 2010

problemas al acceder a las URL de acceso a archivos en aplicaciones de ASPX.NET

Estuve realizando una aplicación web en donde necesite acceder a una imagen y borrarla con su url utilizando System.IO,

especificamente lo que hace el sistema es insertar imagenes y si no me gusta pues la busca, cargo la nueva y borro la actual, es un procedimiento muy simple pero de gran ayuda para manipulación de images, en la mayoria de ejemplos del MSDN nos da esta sentencia para ejecutar la eliminación de la imagen o cualquier tipo de archivo:

if (System.IO.File.Exists(@"c:/user/app_web/images/file1.jpg"))
{
aqui van el procedimiento de eliminación
}

pero que es lo que sucede que nosostros almacenamos las images con la siguiente url:

"~/images/file1.jpg"

y para mostrar la imagen lo único que hacemos es bajamos de la búsqueda esta dirección y la cargamos de esta forma:
images.ImageUrl = _clase_intanciada.constructor.url_image, que equivale a "~/images/file1.jpg" y se carga sin problema nuestra imagen.

el problema lo encontre cuando bajaba esta url y la aplicaba en la sentencia para eliminar la imagen:


//bajamos la variable del url de memoria
url_delete = viewstate["url_image"].toString();

//procedimiento para eliminar
if (System.IO.File.Exists(@url_delte))
{
try
{
}
catch
{
}
}

entonces este procedimiento me daba un error, me saltaba y haciendole un seguimiento con un punto de quiebre me di cuenta que el error decia "No se encuentra la dirección ~/images/file1.jpg".

Al final me di con la respuesta y descubri que existe una directiva que permite instanciar la ruta del servidor y convierte nuestra dirección de tipo "~" en la ruta exacta donde esta publicada nuestra aplicación o proyecto.

La directiva se declara de esta forma
String nombre_cualquiera = Server.MapPath("~/images/file1.jpg");

El ejemplo resuelto queda de esta forma

//declaramos la directiva
string rootpath = server.MapPath(url_delete)

//proceso de eliminación
if (System.IO.File.Exists(@rootpath))
{
}

Listo espero que hayas entendido este ejemplo práctico para acceder a los archivos almacenados en ficheros en el servidor, aplicacion web.

No hay comentarios:

Publicar un comentario