如何在 ML DB 中获取二进制文件的校验和
How to get the checksum of a binary file in ML DB
objective是检测二进制文件是否被更改/修改。
如果有“真正”的变化,就会触发一定的流程。
ML 中存储了pdf 或zip 等二进制文件。
我正在考虑为这些二进制文件的 xml 节点生成像 xdmp:md5
这样的校验和。
但是 xdmp:md5
仅适用于字符串。如何使用存储在 ML DB 中的二进制 uri 来做到这一点?
或者我应该简单地使用外部工具生成校验和并将该文件签名存储为该二进制文件的 属性 吗?
如果您尝试使用 document-node()
而不是 binary()
,则错误消息有点误导:
arg1 is not of type xs:string
它可能应该声明:“arg1 不是 xs:string 或 binary() 类型”
xdmp:md5 和 xdmp:sha* 散列函数接受 item()
,它可以是 xs:string
或 binary()
$data Data to be hashed. Must be xs:string or a binary node.
所以看看使用它们中的任何一个:
请注意,您需要发送 binary()
节点,而不是 document-node()
。因此,如果您 select 带有 fn:doc()
的文档,节点的 XPath:
doc("/myDoc.pdf")/binary() => xdmp:md5()
objective是检测二进制文件是否被更改/修改。 如果有“真正”的变化,就会触发一定的流程。
ML 中存储了pdf 或zip 等二进制文件。
我正在考虑为这些二进制文件的 xml 节点生成像 xdmp:md5
这样的校验和。
但是 xdmp:md5
仅适用于字符串。如何使用存储在 ML DB 中的二进制 uri 来做到这一点?
或者我应该简单地使用外部工具生成校验和并将该文件签名存储为该二进制文件的 属性 吗?
如果您尝试使用 document-node()
而不是 binary()
,则错误消息有点误导:
arg1 is not of type xs:string
它可能应该声明:“arg1 不是 xs:string 或 binary() 类型”
xdmp:md5 和 xdmp:sha* 散列函数接受 item()
,它可以是 xs:string
或 binary()
$data Data to be hashed. Must be xs:string or a binary node.
所以看看使用它们中的任何一个:
请注意,您需要发送 binary()
节点,而不是 document-node()
。因此,如果您 select 带有 fn:doc()
的文档,节点的 XPath:
doc("/myDoc.pdf")/binary() => xdmp:md5()