Foros del Web » Programación para mayores de 30 ;) » Java »

Guardar imagen en una base de datos con java

Estas en el tema de Guardar imagen en una base de datos con java en el foro de Java en Foros del Web. Hola, buenos días, tengo una duda que me está dando dolor de cabeza. A ver is alguien me puede ayudar porque ya no se por ...
  #1 (permalink)  
Antiguo 19/09/2007, 01:07
 
Fecha de Ingreso: julio-2007
Mensajes: 21
Antigüedad: 16 años, 9 meses
Puntos: 0
Guardar imagen en una base de datos con java

Hola, buenos días, tengo una duda que me está dando dolor de cabeza. A ver is alguien me puede ayudar porque ya no se por donde seguir. Estoy usando el codigo que hay las FAQs de este subforo para generar thumbnails con Java. El enlace est este:

http://www.forosdelweb.com/1418257-post28.html

Lo he modificado un poco para que se adapte a lo que quiero hacer. Tengo un formulario donde hay un input file para que el usuario carge en él la imagen que quiera. La dirección de donde está la imagen se la paso a un jsp donde se guarda dicha dirección en un atributo String de un objeto Java. Este objeot lo envío a una clase encargada de recorrer todo sus atributos y guardarlos en una base de datos. La dirección de la imagen la guardo en un campo texto (VARCHAR2) y la imagen en sí en un directorio del servidor. Hasta aquí la explicación de lo que estoy haciendo.

Paso ahora a comentar cuál es mi problema. Cuando la dirección llega de la imagen llega, a través del onjeto, a la clase encargada de guardar los datos en la base de datos salta la siguiente excepción:

Uncaught error fetching image:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.awt.image.FileImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unkno wn Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)


Del código de la FAQ sólo he modificado aquel que se encarga de enviar los atributos de la imagen de entrada y de salida a la clase que hace el resize. Os pongo aquí ese código que he cambiado, el resto es igual que en la FAQ.

Código:
ImageResize img = new ImageResize();
img.setImgOriginal(objeto.getImg());
objeto.setImg("WebContent/img/userimg/" + generaNombre() + "jpg");
img.setImgResult(objeto.getImg());
img.setCalidad(100);
img.setHeight(75);
img.setWidth(78);
img.resize();
NOTA: "objeto" es el objeto Java que guarda entre otros atributos la dirección de la imagen que quiere subir el usuario; "getImg()" es un método del objeto Java para obtener la dirección de la imagen (String); "generaNombre()" es un método que crea un nombre aleatorio y único a la imagen que va a ser guardada en el servidor.

Bueno, espero que me podáis ayudar ya que necesito tener esto para poder continuar con la aplicación que estoy desarrollando y ya llevo varios días de retraso. Muchísimas gracias.
  #2 (permalink)  
Antiguo 19/09/2007, 01:30
 
Fecha de Ingreso: julio-2007
Mensajes: 21
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Guardar imagen en una base de datos con java

Bien, acabo de darme cuenta de que no estaba guardando bien la ruta o direccion de la imagen en el objeto y por eso al llegar a la clase encargada de guardar la informacion de ese objeto en la base de datos me lanzaba la excepcion.

Ahora ya esta llegando bien y no me lanza la excelción, pero el servidor me dice que no encuentra la ruta en la que se debe guardar la imagen. Voy a seguir investigando, pero si alguien me puede ayudar se lo agradecería enormemente.

Saludos.

Última edición por nemrp; 19/09/2007 a las 02:49
  #3 (permalink)  
Antiguo 19/09/2007, 23:18
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Guardar imagen en una base de datos con java

ojo, x que segun yo "WebContent/" es la carpeta "home" de la aplicacion, x lo que la ruta relativa o absoluta debiera ser "/", pero no incluir webContent ya que esta no esta al alcance del navegador.
  #4 (permalink)  
Antiguo 20/09/2007, 00:44
 
Fecha de Ingreso: julio-2007
Mensajes: 21
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Guardar imagen en una base de datos con java

Hola wwwmaster, gracias por responderme. He resuelto algunas cosas pero otras no. Te comento.

He conseguido guardar la imagen pero sólo si pongo la ruta completa del disco duro. Es decir, si pongo, por ejemplo, "C:\temp\imagenes\" se guarda, pero si pongo "/img/userimg/" no se guarda. Y da igual que ponga las barras inclinadas a un lado o a otro, el resultado es el mismo.

No se si esto se debe a que no tengo colgada a aplicación y la estoy ejecutando desde el programa que uso para desarrollar aplicaciones web (Lomboz). Me salta esta excepcion:

Código:
Estado HTTP 404 - \img\userimg\119027035568414463652.jpg (El sistema no puede hallar la ruta especificada)

--------------------------------------------------------------------------------

type Informe de estado

mensaje \img\userimg\119027035568414463652.jpg (El sistema no puede hallar la ruta especificada)

descripción El recurso requerido (\img\userimg\119027035568414463652.jpg (El sistema no puede hallar la ruta especificada)) no está disponible.
NOTA: Fíjate que aún poniendo "/img/userimg/" cambia las barras por "\img\userimg\..."

Por otro lado quería comentarte otro problema. Cuando he conseguido guardar la imagen ésta sale en negro. El tamaño lo cambia pero me guarda una imagen totalmente negra.

Un saludo, gracias por tu atención y aver si me puedes ayudar con estos dos problemas.
  #5 (permalink)  
Antiguo 21/09/2007, 02:54
 
Fecha de Ingreso: julio-2007
Mensajes: 21
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Guardar imagen en una base de datos con java

He hecho todas las pruebas posibles en la direccion donde quiero que se guarde la imagen, pero no consigo nada. Solo si pongo la ruta completa del disco duro me funciona, aunque la imagen que guarda es negra.

He hecho la prueba fuera de la aplicacion (con un pequeño programa java) y funciona perfectamente. Guarda la imagen donde quiero y le cambia el tamaño perfectamente.

¿Sabe alguien dónde está el problema?. Esto comienza a ser deseperante.
  #6 (permalink)  
Antiguo 25/09/2007, 03:34
 
Fecha de Ingreso: julio-2007
Mensajes: 21
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Guardar imagen en una base de datos con java

¿Es posible que en Tomcat tenga que habilitar algo para que me deje guardar las imágenes?, ¿o quizás tenga que tener un permiso especial para poder hacerlo?. De momento, el fallo que me lanza es que no encuentra la dirección donde quiero guardar la imagen, pero esa dirección existe
  #7 (permalink)  
Antiguo 16/10/2007, 21:13
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Guardar imagen en una base de datos con java

No he usado el objeto "resize" que usas, pero yo cambiaria esto:
objeto.setImg("WebContent/img/userimg/" + generaNombre() + "jpg");

asi:
objeto.setImg("img/userimg/" + generaNombre() + ".jpg");

o asi:
objeto.setImg("/img/userimg/" + generaNombre() + ".jpg");

En el primer caso estoy indicando una RUTA RELATIVA de donde se encuentra actualmente el programa, bajando a una carpeta "img" y demas...

en el secundo caso, me refiero a la ruta tomando la CARPETA RAIZ del website (es decir, la relativa al "WEBCONTENT", y le puse el "." en la extension.
(pone la diagnonal invertida si es necesario).

No encontre documentacion en google sobre: ImageResize() setImgResult
x lo que no se si la instrucciones REQUIERA FORZOSAMENTE la ruta DIRECTA hacia el disco duro, en cuyo caso primero tendrias que recupera mediante JAVA la RUTA fisica del website.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:01.