【问题标题】:How to get the checksum of a binary file in ML DB如何在 ML DB 中获取二进制文件的校验和
【发布时间】:2021-12-25 06:25:18
【问题描述】:

目的是检测二进制文件是否已被更改/修改。 如果有“真实”的变化,就会触发某个流程。

像 pdf 或 zip 这样的二进制文件已存储在 ML 中。 我正在考虑为这些二进制文件的 xml 节点生成类似 xdmp:md5 的校验和。 但是 xdmp:md5 仅适用于字符串。如何使用存储在 ML DB 中的二进制 uri 来做到这一点?

或者我应该简单地使用外部工具生成校验和并将该文件签名存储为该二进制文件的属性

【问题讨论】:

  • 我相信 xdmp:md5 也适用于类似于@Mads Hansen 提到的 xdmp:sha 函数的二进制节点。

标签: xquery marklogic


【解决方案1】:

如果您尝试使用document-node() 而不是binary(),则错误消息有点误导:

arg1 不是 xs:string 类型

它可能应该声明:“arg1 不是类型 xs:string 或 binary()

xdmp:md5 和 xdmp:sha* 哈希函数接受 item(),它可以是 xs:stringbinary()

$data 要散列的数据。必须是 xs:string 或二进制节点。

所以看看使用它们中的任何一个:

请注意,您需要发送binary() 节点,而不是document-node()。所以,如果你选择带有fn:doc()的文档,XPath到节点:

doc("/myDoc.pdf")/binary() => xdmp:md5()

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多