在 postgresql 中存储图像
Storing an image in postgresql
我正在尝试将图像存储在 Postgresql 数据库中,我有用于在数据库中存储图像的过程,图像列类型是 bytea.I 试图将我的图像转换为字符串 (Base64) 并进行转换它进入 byte[],但无法更新该图像。
读取图像并将其转换为字符串的代码是:-
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);
}
我用这个link转换了一张图片Link
下面给出的是用于在数据库中保存图像的过程。
CREATE OR REPLACE FUNCTION UpdateProfileImage(product_id character varying, img bytea)
谁能告诉我为什么我不能存储这张图片,或者我哪里做错了..
感谢a_horse_with_no_name。我能够找到我的问题的解决方案。我不需要调用过程来存储图像我需要将图像作为二进制流传递。
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);
}
我正在尝试将图像存储在 Postgresql 数据库中,我有用于在数据库中存储图像的过程,图像列类型是 bytea.I 试图将我的图像转换为字符串 (Base64) 并进行转换它进入 byte[],但无法更新该图像。
读取图像并将其转换为字符串的代码是:-
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);
}
我用这个link转换了一张图片Link 下面给出的是用于在数据库中保存图像的过程。
CREATE OR REPLACE FUNCTION UpdateProfileImage(product_id character varying, img bytea)
谁能告诉我为什么我不能存储这张图片,或者我哪里做错了..
感谢a_horse_with_no_name。我能够找到我的问题的解决方案。我不需要调用过程来存储图像我需要将图像作为二进制流传递。
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);
}