Oracle Blob转Base64

本文最后更新于 2022年4月13日 上午

当你把image类型的文件以二进制方式存到Oracle中,然而读取这个二进制流很麻烦,尤其是不能直接写Java代码的情况下。

如何解决:

  1. 先创建一个函数(以Oracle为例),代码:

    1
    CREATE OR REPLACE Function FUNC_BASE64ENCODE(Blob_In In Blob) Return clob Is I_CLOB CLOB; I_STEP PLS_INTEGER := 12000; Begin If Dbms_Lob.Getlength(Blob_In) Is Null THEN Return ''; End if; For I In 0 .. TRUNC((DBMS_LOB.GETLENGTH(Blob_In) - 1) / I_STEP) LOOP I_CLOB := I_CLOB || UTL_RAW.CAST_TO_VARCHAR2( UTL_ENCODE.BASE64_ENCODE(DBMS_LOB.substr(Blob_In, I_STEP, I * I_STEP + 1 )) ); END LOOP; Return I_CLOB; END;
  2. 在查询的时候调用一下这个函数,参数为Blob类型

    1
    2
    select FUNC_BASE64ENCODE(FILE) PATH
    from Table1
  3. 前端代码

    1
    <img src='data:image/png;base64,${PATH}'>

    直接放入查询的结果即可

问题:

  • 效率低,增加数据库查询的性能消耗
  • 麻烦

解决方案:

  • 直接把文件存到服务器磁盘,而不是数据库,做一下权限验证

Oracle Blob转Base64
https://nanami.run/2022/04/06/Blob2Base64/
作者
Nanami
发布于
2022年4月6日
许可协议