guarda imagenes en la base de datos asp.net mvc 2

Respondida guarda imagenes en la base de datos asp.net mvc 2

  • martes, 21 de diciembre de 2010 16:16
     
     
    Saludo, necesito ayuda, en como poder implementar el controlador y la vista para cargar imagenes y verlas antes de guardarlas en la base de datos, y como es posible guardar las imagenes en la base de datos, tengo mi modelo en Entity Framework, pero al generar el formulario de mi modelo quisiera cargar la imagen y mostrarla antes de guardarla... muchas gracias

Todas las respuestas

  • miércoles, 22 de diciembre de 2010 10:59
     
     Respuesta propuesta

    Buf! Quieres varias cosas a la vez... :)

    Primero para poder mostrar las imágenes, entiendo que alguien te las está subiendo des de el navegador.

    Para ver como capturar en MVC los uploads que se hacen des del navegador, echa un vistazo a http://geeks.ms/blogs/etomas/archive/2010/09/08/subir-ficheros-al-servidor-en-asp-net-mvc.aspx

    Una vez tienes la imagen en el servidor, si la quieres enseñar al usuario, puedes guardar la imagen en un directorio temporal (cuando recibes el Upload). Luego tienes otra acción que puede usar FileResult para devolver la imagen. Aquí te lo cuentan: http://stackoverflow.com/questions/186062/can-an-asp-net-mvc-controller-return-an-image. Tu vista tendrá tags <img> normales salvo que el href será la URL de dicha acción del controlador.

    Finalmente, guardar la imagen en BBDD usando EF... Echa un vistazo a http://social.msdn.microsoft.com/Forums/en/sqlgetstarted/thread/1857938d-b74a-4954-bbde-734dfef08039 a ver si te ayuda ;-)

    Un saludo!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Propuesto como respuesta jtorrecillaMVP jueves, 23 de diciembre de 2010 11:47
    •  
  • miércoles, 22 de diciembre de 2010 19:36
     
     

    bueno doy una explicación mas extensa,

    tengo una tabla por ejemplo 

    Pelicula

    ID ...  Int

    Nombre...  varchar

    imagen...  image

     

    tengo la aplicacion con asp.net mvc 2

    luego genero el modelo con el entity framework

    que pasos debo seguir para poder 

    1. en la vista mostrar el formulario la imagen antes de guardarla en la base de datos

    estube averiguando algo de hacer con un ajaxupload o algo asi.

    2. guardar y recuperar desde la base de datos la imagen

     

    muchas gracias por la ayuda

     

    saludos...



    Ing. Edwin Gustavo Enriquez Arias

    Ing. Edwin Gustavo Enriquez Arias
  • jueves, 23 de diciembre de 2010 9:46
     
     Respondida

    Buenas!

    A ver, son los tres pasos que te comenté antes.

    Primero:

    1. El usuario debe subir la foto en tu servidor. Eso puedes ver como se hace con el primer enlace que te puse. En el controlador recibes el fichero (un objeto HttpPostedFileBase). Una vez tienes ese objeto en el controlador, primero debes guardarlo en algún sitio (bbdd o archivo). P.ej. puedes añadir un campo más en tu tabla que indique si una imagen es temporal o aceptada. Luego, cuando recibes el objeto HttpPostedBase en el controlador puedes guardarlo en la bbdd (mira el 3er enlace que te pasé) con el valor del campo temporal activado.
    2. Una vez tienes la imagen en la bbdd, ya puedes responder al cliente. Para ello generarás una vista que tenga un tag <img> cuyo src no será un jpg, sinó una acción de un controlador. Algo como <img src="/Imagenes/Ver/3879". Entonces en este controlador (en mi caso ImagenesController) y dentro de la acción (en mi caso Ver), tienes el ID pasado, accedes a la BBDD, recojes los byte[] de la imagen y los mandas de vuelta (con FileStreamResult (http://msdn.microsoft.com/es-es/library/system.web.mvc.filestreamresult.aspx) p.ej.). De esa manera el usuario verá la imagen.
    3. Cuando el usuario acepta, simplemente marcas el campo temporal de la bbdd a "no temporal" (la imagen ya la tenías allí).
    4. Si el usuario NO acepta, borras el registro de la bbdd, y listos.

    Ese seria el esquema. Mira los enlaces, si tienes alguna duda en algún punto concreto, ponla aquí y vemos como podemos ir avanzando!!! ;-)

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Propuesto como respuesta jtorrecillaMVP jueves, 23 de diciembre de 2010 11:47
    • Marcado como respuesta Edwin Gustavo viernes, 24 de diciembre de 2010 4:50
    •  
  • viernes, 24 de diciembre de 2010 5:00
     
     

    muchas gracias eduardo,

    me sirvieron de mucho los consejos recibidos, te explicare como di solucion al problema que tenia, ahora necesito ayuda en la parte de edicion y busqueda.. :)

    Solucion

    1.- para visualizar la imagen antes de subirla, utilize JavaScript para mostrar en el browser la imagen.

    2.- para almacenar en la base de datos, utilize un HttpPostedFileBased del fichero de imagen enviado por la vista.

    3.- en el controlador  realize una convercion a Byte del archivo recibido para enviar

    4.- guarde y actualize el modelo.

    y funciono, estoy preparando un paper explicando paso a paso para poder compartir con la comunidad.

    muchas gracias por la ayuda

     

    ahora necesito mostrar las imagenes recibidas y poder editar y eliminar ....

    Felices fiestas y una noche buena.

    Saludos


    Ing. Edwin Gustavo Enriquez Arias
  • miércoles, 09 de marzo de 2011 17:39
     
     

    Yo estoy teniendo el mismo escemario, ¿serías tan amable de subir un ejemplo de cómo te quedó?

    Gracias, saludos!

     

  • martes, 31 de enero de 2012 17:39
     
     

    Hola tal vez es un poquito tarde pero me gustaria compartirles un pequeño ejemplo aquí les dejo el link para que lo puedan descargar, fue hecho en Visual Studio 2010 professional con ASP.NET MVC2

    SolutionImagen LINK: https://skydrive.live.com/?cid=5344589E301A19C7&id=5344589E301A19C7%21141&sc=documents

    "El éxito no es un destino; es un viaje" 


    "El éxito no es un destino; es un viaje"