如何使用Jsp页面在数据库中上传图像如何从数据库中检索图像并在页面中显示另一个图像

时间:2014-07-24 03:15:46

标签: java jsp web-applications

我是jsp的新手所以我想学习如何在DB中保存图像以及如何从DB中检索

2 个答案:

答案 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中。当我们想要使用图像时,我们只需要获取网址。仅