存儲圖檔是後端伺服器比較基礎的功能,一般來說,圖檔可以存儲在伺服器的檔案系統中,然後資料庫中隻需要存儲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,