我正在尝试将图片存储在Postgresql数据库中,我有一个用于将图像存储在数据库中的过程,图像列类型为bytea。 我尝试将我的图像转换为字符串(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);
}
我使用这个链接将图像转换为字符串链接 以下是用于在数据库中保存图像的过程。
CREATE OR REPLACE FUNCTION UpdateProfileImage(product_id character varying, img bytea)
有人能告诉我为什么我无法存储这张图片,或者我做错了什么吗?
PreparedStatement
和setBinaryStream()
,例如:https://dev59.com/CGsy5IYBdhLWcg3wvgn7#8349906或http://stackoverflow.com/a/4339778/330315。 - user330315