Guardar Imagenes
Publicado por Rodney Villamayor (2 intervenciones) el 25/07/2012 19:41:58
Hola a todos!!
Estoy haciendo un trabajo en netbeans y estoy teniendo un pequeño problema:
Tengo un form en el que quiero cargar algunos datos: NombreDeLaEmpresa, Direccion, Telefono y el logotipo de la empresa (aquí es donde radica mi problema).
Para cargar una imagen/logotipo utilizo un JFileChooser.
Tanto la selección del archivo como el mostrar en un jlabel lo hago sin problemas, pero cuando quiero insertar esa imagen a mi bd me tira el error siguiente: "Error reading from InputStream..."
***********************************************************************************************************
Este es mi botón para la selección de un archivo.:
------------------------------------------------------------------------------
Este evento pertenece a un botón que confirma que se guarden los datos a la bd...
Cuando le llamo a CargarParametros le envío la imagen (un FileInputStream) y el archivo (File)
---------------------------------------------------------------------------------------
Y este mi método CargarParametros....
El problema en concreto aparece el la línea: pstmt.setBinaryStream(2, imagen, (int)archivo.length());
Gracias...
Estoy haciendo un trabajo en netbeans y estoy teniendo un pequeño problema:
Tengo un form en el que quiero cargar algunos datos: NombreDeLaEmpresa, Direccion, Telefono y el logotipo de la empresa (aquí es donde radica mi problema).
Para cargar una imagen/logotipo utilizo un JFileChooser.
Tanto la selección del archivo como el mostrar en un jlabel lo hago sin problemas, pero cuando quiero insertar esa imagen a mi bd me tira el error siguiente: "Error reading from InputStream..."
***********************************************************************************************************
Este es mi botón para la selección de un archivo.:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void btnCargar_Click(java.awt.event.ActionEvent evt) {
JFileChooser fc = new JFileChooser();
FileNameExtensionFilter filtro = new FileNameExtensionFilter("Archivos de Imágenes", "bmp", "gif", "ico", "jpg", "png");
fc.setFileFilter(filtro);
fc.setLocation(250, 300);
int resp = fc.showOpenDialog(this);
if (resp == JFileChooser.APPROVE_OPTION) {
try {
archivo = (fc.getSelectedFile());
imagen = new FileInputStream(archivo);
String ubicacion = archivo.getAbsolutePath();
ImageIcon logo = new ImageIcon(ubicacion);
Icon nuevoLogo = new ImageIcon(logo.getImage().getScaledInstance (txt_logotipo.getWidth(),
txt_logotipo.getHeight(), Image.SCALE_DEFAULT));
txt_logotipo.setIcon(nuevoLogo);
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
} finally {
try {
imagen.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
------------------------------------------------------------------------------
Este evento pertenece a un botón que confirma que se guarden los datos a la bd...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void btnAceptar_Click(java.awt.event.ActionEvent evt) {
try {
enables(false);
btn_Cancelar.setEnabled(false);
String nombreEmpresa = txt_NombreEmpresa.getText();
String direccion = txt_Direccion.getText();
String telefono = txt_Telefono.getText();
String eslogan = txt_Eslogan.getText();
int ingresado = DataLayer.CargarParametros(nombreEmpresa, direccion, telefono, eslogan, imagen, archivo);
if (ingresado != 0) {
JOptionPane.showMessageDialog(null, "Los Cambion fueron guardados exitosamente!!", "suceso", JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception exc) {
JOptionPane.showMessageDialog(null, "Error al intentar Guardar", "Error", JOptionPane.ERROR_MESSAGE);
}
}
Cuando le llamo a CargarParametros le envío la imagen (un FileInputStream) y el archivo (File)
---------------------------------------------------------------------------------------
Y este mi método CargarParametros....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static int CargarParametros (String empresa, String direccion, String telefono, String eslogan, FileInputStream imagen, File archivo)
{
String query = "INSERT INTO parametros (NombreEmpresa, Logotipo, Eslogan, Direccion, NroTelefono) values (?,?,?,?,?)";
try
{
int ingresado = 0;
conn = obtConexionMySQL();
pstmt = conn.prepareStatement(query);
pstmt.setString(1, empresa);
pstmt.setBinaryStream(2, imagen, (int)archivo.length());
pstmt.setString(3, eslogan);
pstmt.setString(4, direccion);
pstmt.setString(5, telefono);
ingresado = pstmt.executeUpdate();
return ingresado;
}
catch (SQLException exc)
{
JOptionPane.showMessageDialog (null, exc, "Error", JOptionPane.ERROR_MESSAGE);
return 0;
}
}
El problema en concreto aparece el la línea: pstmt.setBinaryStream(2, imagen, (int)archivo.length());
Gracias...
Valora esta pregunta


0