我对Corda中的上传附件有疑问。
在我的应用程序中,我想在提供者到接收者的交易中附加一个pdf文件。我使用了带有文件名的称为uploadAttachmentWithMetadata
的方法来生成哈希。
以下是我尝试的一些简化代码段: 首先,我得到了哈希值
val pdfHash = proxy.uploadAttachmentWithMetadata(
ByteArrayInputStream(pdf),
identity,
"fileName")
然后我将哈希添加到事务中
txBuilder.addAttachment(pdfHash)
交易完成后,我可以在提供者端使用fileName检索pdf。但是,我不能在接收器端执行相同的操作。我在接收方检查了数据库,但没有找到每个附件的文件名,而提供程序确实有它。所以我的问题是:Corda synchronize
是附件节点之间的fileName吗?如果是这样,我该怎么办?
答案 0 :(得分:0)
我在这里自己回答问题。
在Corda
闲置频道和在线搜索中进行了一些讨论之后,MQ似乎仅“共享”与对方的附件,而没有其文件名。
因此,要获取附件:
对于提供方,您可以按名称获取或按哈希获取:
val ids = proxy.queryAttachments(
AttachmentQueryCriteria.AttachmentsQueryCriteria(filenameCondition = Builder.equal(fileName)),
null
)
...
proxy.openAttachment(it)
对于接收方,如果您确实想要获取附件,则将哈希(存储在该州或某处)存储,然后通过哈希获取。
proxy.openAttachment(SecureHash.parse(hash))
这是我在特殊情况下解决问题的方法。如果您有更好的主意,请留下您的评论。我将非常感激。