如何將小圖片儲存到oracle資料庫
阿新 • • 發佈:2022-01-07
要想儲存圖片檔案到資料庫, 可以利用到oracle的BLOB 或者CLOB欄位
在java中用byte[]接收,直接儲存到資料庫裡的Blob欄位,或者轉成字串儲存到Clob欄位中。
mybatis裡進行欄位與屬性對映時要加個處理器typeHandler
<result column="imageName" jdbcType="CLOB" property="imageString" typeHandler="org.apache.ibatis.type.ClobTypeHandler"/>
接收到檔案,轉成字串如下
@GetMapping("/fileDemo") public void fileDemo(MultipartFile file) throws IOException { // 檔案轉字串, 再將字串寫入資料庫即可 byte[] pngByte = file.getBytes(); String byteToString = Base64.getEncoder().encodeToString(pngByte); // 字串轉檔案 byte[] decode = Base64.getDecoder().decode(byteToString); }
在專案內很少會用資料庫來儲存圖片,一般用OOS物件儲存,但我們這邊有個小專案沒有用,儲存的是圖示,一般幾k大小,為了簡單處理,直接儲存到資料庫了。
由於專案裡要提供介面給人呼叫,用byte[]傳出現了亂碼,所以我們將圖片轉成String進行傳輸。
ps: 用byte[] 傳輸出現亂碼的原因是我們訪問資料庫還是通過我們公司的中間平臺訪問的,平臺並沒有返回byte[]這一型別,只有String Object 這些常用型別。
雖然方法很low , 但能解決專案小圖片儲存問題。