在corda中上载附件

在corda中上载附件,corda,Corda,我已尝试在corda中上载附件。 我查过了。它非常复杂,没有UI。当我尝试使用部分代码时,它显示了全部错误。 我试过了。但在这里哈希是在HTML页面中找到的。我可以得到一个简单的例子来使用kt文件中的UI和哈希查找上传文档吗?黑名单示例还有一个通过Kotlin中的RPC上传附件的例子: package net.corda.examples.attachments.client import net.corda.client.rpc.CordaRPCClient import net.corda

我已尝试在corda中上载附件。 我查过了。它非常复杂,没有UI。当我尝试使用部分代码时,它显示了全部错误。 我试过了。但在这里哈希是在HTML页面中找到的。我可以得到一个简单的例子来使用kt文件中的UI和哈希查找上传文档吗?

黑名单示例还有一个通过Kotlin中的RPC上传附件的例子:

package net.corda.examples.attachments.client

import net.corda.client.rpc.CordaRPCClient
import net.corda.core.crypto.SecureHash
import net.corda.core.messaging.CordaRPCOps
import net.corda.core.utilities.NetworkHostAndPort.Companion.parse
import net.corda.core.utilities.loggerFor
import net.corda.examples.attachments.ATTACHMENT_EXPECTED_CONTENTS
import net.corda.examples.attachments.ATTACHMENT_FILE_NAME
import net.corda.examples.attachments.BLACKLIST_JAR_PATH
import org.slf4j.Logger
import java.io.File
import java.util.jar.JarInputStream

/**
 * Uploads the jar of blacklisted counterparties with whom agreements cannot be struck to the node.
 */
fun main(args: Array<String>) {
    UploadBlacklistClient().main(args)
}

private class UploadBlacklistClient {
    companion object {
        val logger: Logger = loggerFor<UploadBlacklistClient>()
    }

    fun main(args: Array<String>) {
        require(args.isNotEmpty()) { "Usage: uploadBlacklist <node address>" }
        args.forEach { arg ->
            val nodeAddress = parse(arg)
            val rpcConnection = CordaRPCClient(nodeAddress).start("user1", "test")
            val proxy = rpcConnection.proxy

            val attachmentHash = uploadAttachment(proxy, BLACKLIST_JAR_PATH)
            logger.info("Blacklist uploaded to node at $nodeAddress")

            val attachmentJar = downloadAttachment(proxy, attachmentHash)
            logger.info("Blacklist downloaded from node at $nodeAddress")

            checkAttachment(attachmentJar, ATTACHMENT_FILE_NAME, ATTACHMENT_EXPECTED_CONTENTS)
            logger.info("Attachment contents checked on node at $nodeAddress")

            rpcConnection.notifyServerAndClose()
        }
    }
}

/**
 * Uploads the attachment at [attachmentPath] to the node.
 */
private fun uploadAttachment(proxy: CordaRPCOps, attachmentPath: String): SecureHash {
    val attachmentUploadInputStream = File(attachmentPath).inputStream()
    return proxy.uploadAttachment(attachmentUploadInputStream)
}

/**
 * Downloads the attachment with hash [attachmentHash] from the node.
 */
private fun downloadAttachment(proxy: CordaRPCOps, attachmentHash: SecureHash): JarInputStream {
    val attachmentDownloadInputStream = proxy.openAttachment(attachmentHash)
    return JarInputStream(attachmentDownloadInputStream)
}

/**
 * Checks the [expectedFileName] and [expectedContents] of the downloaded [attachmentJar].
 */
private fun checkAttachment(attachmentJar: JarInputStream, expectedFileName: String, expectedContents: List<String>) {
    var name = attachmentJar.nextEntry.name
    while (name != expectedFileName) {
        name = attachmentJar.nextEntry.name
    }

    val contents = attachmentJar.bufferedReader().readLines()

    if (contents != expectedContents) {
        throw IllegalArgumentException("Downloaded JAR did not have the expected contents.")
    }
}
package net.corda.examples.attachments.client
导入net.corda.client.rpc.CordaRPCClient
导入net.corda.core.crypto.SecureHash
导入net.corda.core.messaging.CordaRPCOps
导入net.corda.core.utilities.NetworkHostAndPort.Companion.parse
导入net.corda.core.utilities.loggerFor
导入net.corda.examples.attachments.ATTACHMENT\预期内容
导入net.corda.examples.attachments.ATTACHMENT\u文件名
导入net.corda.examples.attachments.BLACKLIST\u JAR\u路径
导入org.slf4j.Logger
导入java.io.xml文件
导入java.util.jar.JarInputStream
/**
*将无法达成协议的黑名单交易对手的jar上载到节点。
*/
趣味主线(args:Array){
UploadBlacklistClient().main(args)
}
私有类上载BlackListClient{
伴星{
val logger:logger=loggerFor()
}
趣味主线(args:Array){
require(args.isNotEmpty()){“用法:上传黑名单”}
args.forEach{arg->
val nodeAddress=parse(arg)
val rpcConnection=CordaRPCClient(nodeAddress).start(“user1”,“test”)
val proxy=rpcConnection.proxy
val attachmentHash=上传附件(代理,黑名单\u JAR\u路径)
logger.info(“在$nodeAddress上传到节点的黑名单”)
val attachmentJar=下载附件(代理,attachmentHash)
logger.info(“从节点$nodeAddress下载的黑名单”)
检查附件(附件JAR、附件文件名、附件内容)
logger.info(“在$nodeAddress节点上检查的附件内容”)
rpcConnection.notifyServerAndClose()
}
}
}
/**
*将[attachmentPath]处的附件上载到节点。
*/
私有趣味上传附件(代理:CordaRPCOps,附件路径:String):SecureHash{
val attachmentUploadInputStream=文件(attachmentPath).inputStream()
返回proxy.uploadAttachment(attachmentUploadInputStream)
}
/**
*从节点下载带有哈希[attachmentHash]的附件。
*/
私人娱乐下载附件(代理:CordaRPCOps,附件:SecureHash):JarInputStream{
val attachmentDownloadInputStream=proxy.openAttachment(attachmentHash)
返回JarInputStream(附件下载InputStream)
}
/**
*检查下载的[attachmentJar]的[expectedFileName]和[expectedContents]。
*/
private fun checkAttachment(附件jar:JarInputStream,expectedFileName:String,expectedContents:List){
var name=attachmentJar.nextEntry.name
while(name!=expectedFileName){
name=attachmentJar.nextEntry.name
}
val contents=attachmentJar.bufferedReader().readLines()
如果(内容!=预期内容){
抛出IllegalArgumentException(“下载的JAR没有预期的内容。”)
}
}
黑名单示例还有一个通过Kotlin中的RPC上传附件的示例:

package net.corda.examples.attachments.client

import net.corda.client.rpc.CordaRPCClient
import net.corda.core.crypto.SecureHash
import net.corda.core.messaging.CordaRPCOps
import net.corda.core.utilities.NetworkHostAndPort.Companion.parse
import net.corda.core.utilities.loggerFor
import net.corda.examples.attachments.ATTACHMENT_EXPECTED_CONTENTS
import net.corda.examples.attachments.ATTACHMENT_FILE_NAME
import net.corda.examples.attachments.BLACKLIST_JAR_PATH
import org.slf4j.Logger
import java.io.File
import java.util.jar.JarInputStream

/**
 * Uploads the jar of blacklisted counterparties with whom agreements cannot be struck to the node.
 */
fun main(args: Array<String>) {
    UploadBlacklistClient().main(args)
}

private class UploadBlacklistClient {
    companion object {
        val logger: Logger = loggerFor<UploadBlacklistClient>()
    }

    fun main(args: Array<String>) {
        require(args.isNotEmpty()) { "Usage: uploadBlacklist <node address>" }
        args.forEach { arg ->
            val nodeAddress = parse(arg)
            val rpcConnection = CordaRPCClient(nodeAddress).start("user1", "test")
            val proxy = rpcConnection.proxy

            val attachmentHash = uploadAttachment(proxy, BLACKLIST_JAR_PATH)
            logger.info("Blacklist uploaded to node at $nodeAddress")

            val attachmentJar = downloadAttachment(proxy, attachmentHash)
            logger.info("Blacklist downloaded from node at $nodeAddress")

            checkAttachment(attachmentJar, ATTACHMENT_FILE_NAME, ATTACHMENT_EXPECTED_CONTENTS)
            logger.info("Attachment contents checked on node at $nodeAddress")

            rpcConnection.notifyServerAndClose()
        }
    }
}

/**
 * Uploads the attachment at [attachmentPath] to the node.
 */
private fun uploadAttachment(proxy: CordaRPCOps, attachmentPath: String): SecureHash {
    val attachmentUploadInputStream = File(attachmentPath).inputStream()
    return proxy.uploadAttachment(attachmentUploadInputStream)
}

/**
 * Downloads the attachment with hash [attachmentHash] from the node.
 */
private fun downloadAttachment(proxy: CordaRPCOps, attachmentHash: SecureHash): JarInputStream {
    val attachmentDownloadInputStream = proxy.openAttachment(attachmentHash)
    return JarInputStream(attachmentDownloadInputStream)
}

/**
 * Checks the [expectedFileName] and [expectedContents] of the downloaded [attachmentJar].
 */
private fun checkAttachment(attachmentJar: JarInputStream, expectedFileName: String, expectedContents: List<String>) {
    var name = attachmentJar.nextEntry.name
    while (name != expectedFileName) {
        name = attachmentJar.nextEntry.name
    }

    val contents = attachmentJar.bufferedReader().readLines()

    if (contents != expectedContents) {
        throw IllegalArgumentException("Downloaded JAR did not have the expected contents.")
    }
}
package net.corda.examples.attachments.client
导入net.corda.client.rpc.CordaRPCClient
导入net.corda.core.crypto.SecureHash
导入net.corda.core.messaging.CordaRPCOps
导入net.corda.core.utilities.NetworkHostAndPort.Companion.parse
导入net.corda.core.utilities.loggerFor
导入net.corda.examples.attachments.ATTACHMENT\预期内容
导入net.corda.examples.attachments.ATTACHMENT\u文件名
导入net.corda.examples.attachments.BLACKLIST\u JAR\u路径
导入org.slf4j.Logger
导入java.io.xml文件
导入java.util.jar.JarInputStream
/**
*将无法达成协议的黑名单交易对手的jar上载到节点。
*/
趣味主线(args:Array){
UploadBlacklistClient().main(args)
}
私有类上载BlackListClient{
伴星{
val logger:logger=loggerFor()
}
趣味主线(args:Array){
require(args.isNotEmpty()){“用法:上传黑名单”}
args.forEach{arg->
val nodeAddress=parse(arg)
val rpcConnection=CordaRPCClient(nodeAddress).start(“user1”,“test”)
val proxy=rpcConnection.proxy
val attachmentHash=上传附件(代理,黑名单\u JAR\u路径)
logger.info(“在$nodeAddress上传到节点的黑名单”)
val attachmentJar=下载附件(代理,attachmentHash)
logger.info(“从节点$nodeAddress下载的黑名单”)
检查附件(附件JAR、附件文件名、附件内容)
logger.info(“在$nodeAddress节点上检查的附件内容”)
rpcConnection.notifyServerAndClose()
}
}
}
/**
*将[attachmentPath]处的附件上载到节点。
*/
私有趣味上传附件(代理:CordaRPCOps,附件路径:String):SecureHash{
val attachmentUploadInputStream=文件(attachmentPath).inputStream()
返回proxy.uploadAttachment(attachmentUploadInputStream)
}
/**
*从节点下载带有哈希[attachmentHash]的附件。
*/
私人娱乐下载附件(代理:CordaRPCOps,附件:SecureHash):JarInputStream{
val attachmentDownloadInputStream=proxy.openAttachment(attachmentHash)
返回JarInputStream(附件下载InputStream)
}
/**
*检查下载的[attachmentJar]的[expectedFileName]和[expectedContents]。
*/
private fun checkAttachment(附件jar:JarInputStream,expectedFileName:String,expectedContents:List){
var name=attachmentJar.nextEntry.name
while(name!=expectedFileName){
name=attachmentJar.nextEntry.name
}
val contents=attachmentJar.bufferedReade