Subir y Mostrar Imagenes con MSSQL

[Usando Store Procedures]

 

Fecha: 13/07/2005 (12 de Julio del 2005)
Autor: Ronald Requena Crispin ([email protected])

 


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


ir al índice