我是jsp的新手所以我想学习如何在DB中保存图像以及如何从DB中检索
答案 0 :(得分:0)
您可以将图像存储在数据库中,但这不是明智的做法。
Hello Programmer起初,您需要考虑一下您将使用的尺寸(宽度和高度),这是一张小型照片吗?这是一张大专辑照片吗?我可以告诉你,如果你想将小图像存储在数据库中,那对我来说没问题,但是大图像必须保存在由网址访问的磁盘中。
当我需要这样做时,我使用转换并存储在数据库中的base64图像,如String,vou VarChar,它取决于你的数据库,但有了它你需要在上传时转换为base64,然后重新启动 - 转换回显示图像,这对当前的计算机来说不是问题。
使用此功能,我们可以将BufferedImage(最有可能通过上传服务获取)转换为String,之后我们可以将其存储在数据库中。
public static String encodeToString(BufferedImage image, String type) {
String imageString = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ImageIO.write(image, type, bos);
byte[] imageBytes = bos.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
imageString = encoder.encode(imageBytes);
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
return imageString;
}
使用此方法,我们可以将String转换回BufferedImage,并在jps文件上显示或提供。
public static BufferedImage decodeToImage(String imageString) {
BufferedImage image = null;
byte[] imageByte;
try {
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imageString);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
return image;
}
显然我的回答并没有包含存储在数据库中的所有方面,或者jps如何与java一起工作,但这只是我的建议。
感谢您阅读。
答案 1 :(得分:0)
一般来说,正如melkysalem所说,我们将图像的URL存储在DB中。当我们想要使用图像时,我们只需要获取网址。仅