Oracle Blob转Base64
本文最后更新于 2022年4月13日 上午
当你把image类型的文件以二进制方式存到Oracle中,然而读取这个二进制流很麻烦,尤其是不能直接写Java代码的情况下。
如何解决:
先创建一个函数(以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;
在查询的时候调用一下这个函数,参数为Blob类型
1
2select FUNC_BASE64ENCODE(FILE) PATH
from Table1前端代码
1
<img src='data:image/png;base64,${PATH}'>
直接放入查询的结果即可
问题:
- 效率低,增加数据库查询的性能消耗
- 麻烦
解决方案:
- 直接把文件存到服务器磁盘,而不是数据库,做一下权限验证
Oracle Blob转Base64
https://nanami.run/2022/04/06/Blob2Base64/