Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: yromanova en 14 de Noviembre 2021, 06:37

Título: postgresql guardar una foto o imagen desde java FileInputStream setBinaryStream
Publicado por: yromanova en 14 de Noviembre 2021, 06:37
Hola, espero que esteis muy bien. Oye, tengo una duda, como se hace para guardar una foto o imagen en postgres desde java, digamos, en si la foto, y no el URL de la foto...
Título: Re: Postgresql
Publicado por: javi in the sky en 14 de Noviembre 2021, 19:50
Hola almacenar un archivo en una base de datos puede considerarse poco adecuado (porque puede ser ineficiente), aunque a veces se hace. No domino el tema, pero en PostgreSQL tienes dos maneras de almacenar información binaria como un fichero de imagen, el tipo de dato bytea y el uso de Objeto de gran tamaño (Large Object).
Para guardar una imagen en forma de bytea usando JDBC puedes tener una tabla donde un campo sea bytea (supongamos CREATE TABLE images (imgname text, img bytea); )

El guardado de una imagen lo harías como:

Código: [Seleccionar]
File file = new File("imagen1.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");
ps.setString(1, file.getName());
ps.setBinaryStream(2, fis, file.length());
ps.executeUpdate();
ps.close();
fis.close();