Publicar imagenes desde ASP.NET

En este ejercicio ejemplificaré como recuperar una imagen desde SQL Server y publicarla usando ASP.NET. Con este mecanismo tendremos una paguna aspx que responderá una imagen en lugar de responder HTML.
1.- Iniciamos recuperando el parametro que identificará a la imagen dentro de nuestra tabla en la BD. En esta parte debemos tener el suficiente control para no admitir cualquier valor sino solo aque que pueda darnos un resultado correcto al recuperar la información de la imagen desde nuextra tabla para esto podemos hacer uso de las siguientes condiciones:
Request.QueryString[“img”] == null
Request.QueryString[“img”].ToString() == “”
si esto no se cumple significa que no se ha pasado en la variable “img” la referencia a la imagen que debemos recuperar por lo que no seguimos, ya que no se cumple con los requisitos.
2.- Recuperar la colección de Bytes que corresponde a la BD de acuerdo a la referencia recuperada en el punto 1.
SqlConnection conn = new SqlConnection(Properties.Settings.Default.ConnString);
SqlCommand cmd = new SqlCommand(“select Foto from tabla where Id=@id”, conn);
cmd.Parameters.Add(“id”, SqlDbType.Int).Value = id;
conn.Open();
byte[] byteImage;
try
{
byteImage = (byte[])cmd.ExecuteScalar();
Response.ContentType = “image/jpeg”;
Response.Expires = 0;
Response.Buffer = true;
Response.Clear();
Response.BinaryWrite(byteImage);
Response.End();
}
catch
{
byteImage = null;
}
conn.Close();

La lógica es, si hay una imagen para mostrar se envia el encabezado de acuerdo al formato de la imagen que se va a enviar en el ejmemplo se considera que las imagenes siempre tendrán el mismo formato (JPG) por eso enviamos de encabezado image/jpeg.

Establacemos que el contenido enviado no va a expirar, además de habilitar el uso de Buffer durante en el envio de contenido de la imagen.
El paso de aplicar el método Clear ya que limpia todo el contenido colocado en la salida como parte de la respuesta de la página ASPX. así nos aseguramos que lo unico que se va a responder por parte de la página es la imagen recuperada desde la BD.
Escribimos la coleccion de Bytes recuperada y para finalizar especificamos que el envío de información ha terminado.

Cabe resaltar que con esta código no importa la estructura HTML que se tenga en la pagina ASPX. Estas instrucciones podrían están en el evento Page_Load.

Un saludo a todos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.