Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Storing an image in postgresql

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..

like image 487
Luffy Avatar asked Oct 19 '22 13:10

Luffy


1 Answers

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);
}
like image 57
Luffy Avatar answered Oct 29 '22 14:10

Luffy