Subir y Mostrar Imagenes con MSSQL[Usando Store Procedures]
Fecha: 13/07/2005 (12 de Julio del 2005)
|
Introducción.
Muchas veces hemos tenido la necesidad de usar imagenes en todo proyecto tales como guardar y poder mostrarlos, lo cual a veces suele ser dificultosos para.
Actualmente a una persona le agrada entrar a una web y encontrarse con muchas imagenes galerias que le especifiquen sobre el contenido de la web lo cual nos lleva a tratar alas imagenes dinamicamente. Por ello envio esta colaboracion para que puedan incluir imagenes a sus proyectos ya no como algo estatico si no dinamico que puede variar cambiarse adecuarse tales como elimanrse, modificarse , etc lo cual hace mas vistoso a una web.
Creación del Ejemplo
Acontinuación les mostrare el proyecto desarrollado en C# espero que les sea de gran utilidad.
TABLA y los Store procedure usados:
Aqui podemos apreciar la interfaz de donde vamos a subir las imagenes sin restriccion de formato y tamaño.
Para ello usamos un control de html: Una ves que este control obtiene la direccion de la imagen se presiona el boton Upload y a continuacion se ejecuta el siguiente codigo:
int len = Upload.PostedFile.ContentLength; byte[] pic = new byte[len]; Upload.PostedFile.InputStream.Read (pic, 0, len); SqlConnection con = new SqlConnection (@"server=LocalHost;database=img;uid=sa"); try { con.Open (); SqlCommand cmd = new SqlCommand ("INSERTARIMAGEN", con); //Ojo Store Procedure SqlParameter par; int n=0; cmd.CommandType=CommandType.StoredProcedure; par=cmd.Parameters.Add ("@foto",SqlDbType.Image); par.Direction = ParameterDirection.Input; par.Value=pic; par=cmd.Parameters.Add ("@descripcion", SqlDbType.VarChar, 50); par.Direction = ParameterDirection.Input; par.Value=txtDescripcion.Text; n=cmd.ExecuteNonQuery (); SqlDataAdapter da = new SqlDataAdapter ("VERULTIMAIMAGEN", con); //Ojo Store Procedure DataSet ds = new DataSet(); da.Fill(ds); imgVista.ImageUrl="Imagen.aspx?Id=" + ds.Tables[0].Rows[0][0]; imgVista.Visible=true; lblVista.Visible=true; } finally { con.Close (); }Ahi hay algo nuevo que es "Imagen.aspx?Id=" se preguntaran que es pues es un pagina comun y corriente que en su evento load esta el siguiente codigo:
private void Page_Load(object sender, System.EventArgs e) { String Id = Request.QueryString["Id"]; SqlConnection con = new SqlConnection("Uid=sa; Server=LocalHost; DataBase=IMG"); SqlDataAdapter da = new SqlDataAdapter("select * from IMAGEN where IdImagen='" + Id + "'", con); DataSet ds = new DataSet(); da.Fill(ds); DataTable dt = ds.Tables[0]; if (dt.Rows.Count<1) { Response.End(); } else { Response.BinaryWrite((byte[])dt.Rows[0][1]); } }
Aqui probamos la aplicacion seleccinando una imagen y le damos click en el boton Upload
e inmediatamente se muestra la imagen que se ha seleccionado.Si se desea ver todas las imagenes ya subidas antes, hay una pestaña que dice: "GALERIA DE IMAGENES" ahi se encuentran todas las imagenes subidas a la BD como se muestra en la siguiente imagen:
el codigo de esta pagina es la siguiente:private void Page_Load(object sender, System.EventArgs e) { SqlConnection con = new SqlConnection (@"server=LocalHost;database=img;uid=sa"); DataSet ds = new DataSet(); try { con.Open (); SqlDataAdapter da = new SqlDataAdapter ("select * from IMAGEN", con); da.Fill(ds); dtImg.DataSource=ds.Tables[0]; dtImg.DataBind(); } finally { con.Close (); } }
Espacios de nombres usados en el código de este artículo:
System.Data.SqlClient;
P.D.: Cualquier duda o comentario ahi dejo mi email, ahh y no se olviden de calificar el articulo si.....Megabyes....
Fichero con el código de ejemplo: ronald16c_SqlImagenes.zip - Tamaño 30.90 KB