天天看點

java 讀取圖檔并存儲到資料庫中

存儲圖檔是後端伺服器比較基礎的功能,一般來說,圖檔可以存儲在伺服器的檔案系統中,然後資料庫中隻需要存儲url就可以了。另外一種辦法是,将圖檔通過Base64編碼後存儲到資料庫中,資料庫中存儲圖檔的base64編碼的二進制可以使用TEXT(mysql)類型。

BufferedImage image = null;
String imageStr = null;
try {
    String url = ResourceUtils.getURL("classpath:").getPath();
    System.out.println(url);
    image = ImageIO.read(new FileInputStream(url + "/static/pages/images/demo.jpg"));
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", bos);
    byte[] imageBytes = bos.toByteArray();
    BASE64Encoder encoder = new BASE64Encoder();
    imageStr = encoder.encode(imageBytes);
    bos.close();
} catch (IOException e) {
    e.printStackTrace();
}      

其中 imageStr中存儲的就是圖檔的二進制通過Base64編碼之後的字元串,存儲到資料庫中,給前端的時候,直接傳給前端,前端調用的時候,也隻需要 将Base64編碼放在 src="" 裡面就可以了。不過,據我的使用來看,直接這樣會差點東西,就是圖檔前面的描述那部分,是以,可以在字元串加個字首

如果是jpg:

data:image/jpeg;base64,      
data:image/png;base64,