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_nameextensionmime_type 等,以便您知道该列包含什么。然后,您可以依赖这些元数据列,而不是尝试解析文件的内容。

【讨论】:

以上是关于ORACLE SQL中获取BLOB的图像格式的主要内容,如果未能解决你的问题,请参考以下文章

将图像从客户端 pc 又名 Oracle 中的 Java 函数复制到 BLOB

如何以BLOB格式将图像上传到Firebase存储?

将 blob 从 JS 保存到 Oracle SQL?

从json中的mysql获取Blob图像并转换为位图

如何使用 Java 将 base 64 图像插入 BLOB 列? (甲骨文)

如何在颤动中将 Blob 转换为图像