【问题标题】:How to upload image in database using Jsp page And how to retrieve image from Database and show another in page如何使用 Jsp 页面在数据库中上传图像以及如何从数据库中检索图像并在页面中显示另一个
【发布时间】:2014-09-15 11:12:52
【问题描述】:

我是jsp新手,所以我想学习如何将图像保存在数据库中以及如何从数据库中检索

【问题讨论】:

标签: java jsp web-applications


【解决方案1】:

您可以将图像存储在数据库中,但这不是可取的,也是不好的做法。

您好程序员,首先您需要考虑一下您将使用的尺寸(宽度和高度)是多少,用于一张小头像?是为了一张大相册照片吗?我可以建议您,如果您想将小图像存储在数据库中,对我来说可以,但大图像必须保存在通过 url 访问的磁盘中。

当我需要这样做时,我使用转换并存储在数据库中的 base64 图像,如 String,vou VarChar,这取决于您的数据库,但使用它您需要在上传时转换为 base64,然后重新- 转换为图像重新显示,这对当前的计算机来说不是问题。

通过这个函数,我们可以将BufferedImage(最有可能通过上传服务获取)转换为String,然后我们可以将其存储在DB中。

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 一起工作,但这只是我的建议。

感谢阅读。

【讨论】:

    【解决方案2】:

    一般来说,正如 melkysalem 所说,我们将图像的 url 存储在 DB 中。当我们想使用图像时,我们只需获取 url。仅限。

    【讨论】:

    • 这一行可能是一个很好的评论,但永远不能作为答案。
    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    相关资源
    最近更新 更多