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

Problema con subir imagenes a la bd

Estas en el tema de Problema con subir imagenes a la bd en el foro de Java en Foros del Web. Hola, estoy haciendo una aplicacion de gestion de productos. Mi problema es que al insertar o modificar un producto no me guarda la imagen en ...
  #1 (permalink)  
Antiguo 19/04/2010, 10:06
 
Fecha de Ingreso: abril-2010
Mensajes: 42
Antigüedad: 14 años
Puntos: 0
Problema con subir imagenes a la bd

Hola, estoy haciendo una aplicacion de gestion de productos. Mi problema es que al insertar o modificar un producto no me guarda la imagen en la base de datos. Trabajo con eclipse y con phpMyadmin para la base de datos.
Es una aplicacion tipo cliente/servidor.

El caso es que al modificar el producto, me salen todos los datos del producto, incluida la foto que subi con anterioridad a mano a la bd. Este es el codigo que utilizo para el boton examinar:

Código:
public void actionPerformed(java.awt.event.ActionEvent e) {
					JFileChooser fileChooser = new JFileChooser();
					FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF", "jpg", "gif");
					fileChooser.setFileFilter(filter);
					fileChooser.setApproveButtonText("Abrir");
					int seleccion= fileChooser.showOpenDialog(jInternalFrameProduktuak);
					if (seleccion== JFileChooser.APPROVE_OPTION){
					   ImageIcon imagen= new ImageIcon(fileChooser.getSelectedFile().getPath());
				        if(imagen.getIconHeight()>128 || imagen.getIconWidth()>128){
				            ImageIcon imageScalada = new ImageIcon(imagen.getImage().getScaledInstance(128, 128, 128));
				            jLabelImagen.setIcon(imageScalada); 
				        }else{
				        	jLabelImagen.setIcon(imagen); 
				        }
					   jTextField.setText(fileChooser.getSelectedFile().getPath());
					   url = fileChooser.getSelectedFile().getPath();
					}else if(seleccion== JFileChooser.ERROR_OPTION){
						JOptionPane.showMessageDialog(
								new JPanel(),
							   "Error, vuelve a insertar otra imagen.");
					}
				}
Esta es la llamada a la clase en la que paso los atributos:

Código:
AukeraNagusiak.getUrrunekoObj().ModificarProductos_llamada(Id_producto, jLabelNombre.getText(), url, jTextAreaDescripcion.getText());
Se supone que hasta aqui me debe coger la nueva imagen, insertarla en un label y escribir la path en otro. Esto me lo hace bien. Ahora en la clase en la que hago la conexion con la bd (en la conexion no tengo problemas) y llamo a la procedura tengo el siguiente codigo:

Código:
public void ModificarProductos_llamada(int id_producto, String nombre,
			String url, String descripcion) throws RemoteException{
		ResultSet productos= null;
		CallableStatement s;
		//FileInputStream fis = null;
		String sql;
		try {
			sql = "{CALL ModificarProducto(?, ?, ?, ?)}";
			s = (CallableStatement) o.prepareCall(sql);
			//fis = new FileInputStream(image);
			File image = new File("\""+url+"\"");
		    FileInputStream   fis = new FileInputStream(image);
			s.setInt(1, id_producto);
			s.setString(2, nombre);
			s.setBinaryStream(3, fis, (int) image.length());
			s.setString(4, descripcion);
			productos= (ResultSet) s.executeQuery();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}	
	}

La url me la pasa bien completa, pero al intentar guardar los cambios me sale el siguiente error:

java.io.FileNotFoundException: "C:\Documents and Settings\Administrador\Mis documentos\imagen.JPG" (El nombre de archivo, directorio o etiqueta del volumen no es válido)


Porque me sale este error si la imagen existe en esta path??

Otra cosa que me inquieta, creo que tiene que ver si no es el fallo, es que en la base de datos, al hacer el update, no se que formato darle al archivo que es de tipo longBlob:

Código:
CREATE PROCEDURE `ModificarProducto`(in id int(11), in nom varchar(20), in imagen longBlob, in des varchar(40))
update prodctos as p SET p.id_producto=id, p.nombre=nom, p.foto=imagen, p.descripcion=desc
where p.id_producto=id

Gracias

Etiquetas: bd, imagenes, subir
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 21:12.