簡體   English   中英

如何使用Jsp頁面在數據庫中上載圖像以及如何從數據庫中檢索圖像並在頁面中顯示另一個圖像

[英]How to upload image in database using Jsp page And how to retrieve image from Database and show another in page

我是jsp的新手,所以我想學習如何在DB中保存圖像以及如何從DB中檢索圖像

您可以將圖像存儲在數據庫中,但不建議這樣做,這也是一種不好的做法。

首先,您好,程序員,您需要考慮使用的尺寸(寬度和高度)是多少,這是一張小小的個人資料照片嗎? 是一張大專輯照片嗎? 我可以建議您,如果您想在數據庫中存儲小圖像,那對我來說是可以的,但是大圖像必須保存在通過URL訪問的磁盤中。

當我需要執行此操作時,我會使用轉換並存儲在數據庫中的base64圖像(如String,VuVarChar),它取決於您的數據庫,但是使用它,您需要在上載時轉換為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一起工作,但這只是我的建議。

感謝閱讀。

一般來說,正如melkysalem所說,我們將圖片的url存儲在DB中。 當我們想使用圖像時,我們只獲取URL。 只要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM