I'm trying to store an Image in Postgresql Database, I have procedure which is used to store image in database, Image column type is bytea.I tried to convert my image into String(Base64) and converted it into the byte[], but not able to update that image.
Code to read Image And convert it into the String is This:-
File file = new File("FilePath\\image.jpg");
try
{
// Reading a Image file from file system
FileInputStream imageInFile = new FileInputStream(file);
byte imageData[] = new byte[(int) file.length()];
imageInFile.read(imageData);
// Converting Image byte array into Base64 String By calling encodeImage Function
byte[] imageDataString = encodeImage(imageData);
CallableStatement statement = con.prepareCall(" { call products_update_image( '" + id + "', '" + imageDataString + "') } ");
statement.execute();
}
catch (Exception ex)
{
System.out.println("Exception is:- " + ex);
}
public static byte[] encodeImage(byte[] imageByteArray)
{
return Base64.encodeBase64(imageByteArray);
}
I used this link to convert an image Link Given below is procedure which is used to save an image in database.
CREATE OR REPLACE FUNCTION UpdateProfileImage(product_id character varying, img bytea)
Can Anyone tell me why I'm not able to store this Image, or what I'm doing wrong..
Thanks to a_horse_with_no_name. I'm able to found solution of my Problem. I don't need to call procedure to store Image I need to pass image as Binary Stream.
PreparedStatement pstmt = con.prepareStatement("UPDATE PRODUCTS SET IMAGE = ? WHERE ID = ?");
File file = new File("C:\\Program Files (x86)\\openbravopos-2.30.2\\image.jpg");
FileInputStream in = new FileInputStream(file);
try
{
pstmt.setBinaryStream(1, in, (int) file.length());
pstmt.setString(2, id);
pstmt.executeUpdate();
//con.commit
}
catch (Exception ee)
{
System.out.println("Exception is:- " + ee);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With