Nous essayons de télécharger un pdf en pièce jointe à la transaction corda en utilisant le streaming binaire. en fait nous avons eu notre inspiration d'ici (https://github.com/corda/corda/blob/release-M13.0/core/src/main/kotlin/net/corda/core/Utils.kt) jetez un coup d'œil à sizeInputStreamAndHash(). Y a-t-il d'autres suggestions que nous pourrions essayer?Corda: Je ne peux pas utiliser le streaming binaire de l'interface web pour attacher un pdf (fichier) au noeud Corda
Ce qui suit est un extrait de la façon dont nous avons écrit pour le streaming binaire dans l'API:
logger.debug(numOfClearBytes)
val baos = ByteArrayOutputStream()
ZipOutputStream(baos).use({ zos ->
val arraySize = numOfClearBytes.toByteArray().size
val bytes = numOfClearBytes.toByteArray()
val n = (numOfClearBytes.toByteArray().size - 1)/arraySize + 1 // same as Math.ceil(numOfExpectedBytes/arraySize).
zos.setLevel(Deflater.BEST_COMPRESSION)
zos.putNextEntry(ZipEntry("z"))
for (i in 0 until n) {
zos.write(bytes, 0, arraySize)
}
zos.closeEntry()
})
val bytes = baos.toByteArray()
val inputAndHash: InputStreamAndHash = InputStreamAndHash(ByteArrayInputStream(bytes), bytes.sha256())
val attachmentId = services.uploadAttachment(inputAndHash.inputStream)
val flowHandle = services.startTrackedFlow(::Payer, exchangeAmount, otherParty, attachmentId)
val attachmentId = services.uploadAttachment(inputAndHash.inputStream)
val flowHandle = services.startTrackedFlow(::Payer, exchangeAmount, otherParty, attachmentId)
Et qu'est-ce qui a mal tourné? Y avait-il un message d'erreur? – joel
Howdy Joel! Ce n'est pas tellement sur le problème de Corda, mais je suppose que la bibliothèque à utiliser pour faire fonctionner l'API web. Nous avons utilisé 'import org.glassfish.jersey.media' dans notre projet et nous avons eu une erreur à cause du fait que corda n'a pas enregistré MultiPartFeature.class quand il a démarré le serveur web. Sans cela, nous ne pouvons pas utiliser @FormDataParam dans l'API pour MediaType.MULTIPART_FORM_DATA –