如何将小图片保存到oracle数据库

要想保存图片文件到数据库, 可以利用到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 , 但能解决项目小图片保存问题。

 

posted @ 2022-01-07 15:27  得好好活  阅读(796)  评论(0)    收藏  举报