ORACLE SQL中获取BLOB的图像格式
Posted
技术标签:
【中文标题】ORACLE SQL中获取BLOB的图像格式【英文标题】:Get Image Format of BLOB in ORACLE SQL 【发布时间】:2021-01-02 18:47:21 【问题描述】:我将图像作为 BLOB 类型存储在我的数据库中,但是我想将其限制为仅 svg 类型,我知道我无法从 blob 中获取图像名称或任何内容,但我假设我可以在至少,想知道如何使用 oracle SQL 来实现这一点。
【问题讨论】:
【参考方案1】:就 Oracle 而言,blob
只是一堆字节。它不知道它是图像、文档还是视频,因此它不知道任何东西可能是什么格式。理论上,您可以look up the specification of the SVG file format 并编写一些代码来尝试识别该文件。这将有多复杂将在很大程度上取决于您希望识别文件的准确程度。
SVG document format 似乎是一个 XML 文档,其中包含许多 svg
元素,因此您可以执行一些操作,例如将 blob
转换为 XML clob
并在其上运行 XPath 表达式以查找 @ 987654327@ 元素。这并不能保证您是正确的——我可以创建一个包含svg
元素的 XML 文档,该元素不是 SVG 文件,但它可能足够接近。或者,或者另外,您可以查看文档中的 XML 命名空间,以查看 svg
元素是否引用了 W3C SVG 文件格式 URL(即 xmlns:svg="http://www.w3.org/2000 /svg")。
不过,实际上,如果您关心blob
列的格式,通常将元数据信息存储在其他列中更有意义。无论将数据加载到blob
列中的什么,几乎都可以肯定能够填充其他列,例如file_name
、extension
、mime_type
等,以便您知道该列包含什么。然后,您可以依赖这些元数据列,而不是尝试解析文件的内容。
【讨论】:
以上是关于ORACLE SQL中获取BLOB的图像格式的主要内容,如果未能解决你的问题,请参考以下文章
将图像从客户端 pc 又名 Oracle 中的 Java 函数复制到 BLOB