【发布时间】:2021-01-02 18:47:21
【问题描述】:
我将图像作为 BLOB 类型存储在我的数据库中,但是我想将其限制为仅 svg 类型,我知道我无法从 blob 中获取图像名称或任何内容,但我假设我可以在至少,想知道如何使用 oracle SQL 来实现这一点。
【问题讨论】:
我将图像作为 BLOB 类型存储在我的数据库中,但是我想将其限制为仅 svg 类型,我知道我无法从 blob 中获取图像名称或任何内容,但我假设我可以在至少,想知道如何使用 oracle SQL 来实现这一点。
【问题讨论】:
就 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 等,以便您知道该列包含什么。然后,您可以依赖这些元数据列,而不是尝试解析文件的内容。
【讨论】: