gpt4 book ai didi

java - 如何使用 md5 通过 Camel 路由到 S3 检查文件完整性?

转载 作者:行者123 更新时间:2023-11-30 02:45:14 24 4
gpt4 key购买 nike

我正在使用 Camel 将文件发送到 s3 存储桶。我想使用 md5 验证文件完整性。我正在使用org.apache.commons.codec.digest.DigestUtils

from(ftp_endpoint)
.idempotentConsumer(simple("${in.header.CamelFileName}"), redisIdempotentRepository)
.setHeader(S3Constants.KEY, simple("${file:name}"))
.setHeader(S3Constants.CONTENT_MD5, simple(DigestUtils.md5(body().toString()).toString()))
.to(s3_endpoint)

我收到以下异常

com.amazonaws.services.s3.model.AmazonS3Exception: The Content-MD5 you specified was invalid. 
(Service: Amazon S3; Status Code: 400; Error Code: InvalidDigest; Request ID: 8462458C6250091C)

如何正确计算 MD5 以便将其上传到 S3。

最佳答案

我可以在您的 setHeader 中发现一些问题。

.setHeader(S3Constants.CONTENT_MD5, simple(DigestUtils.md5(body().toString()).toString()))

首先,您没有计算正文的 MD5(我认为它是 byte[],因为您正在读取文件),因为您正在调用 toString()就在上面。
其次,DigestUtils.md5 的文档声明返回类型是 byte[] ,您再次对其调用 toString() 。

在字节数组上调用toString()会返回一个包含类似内容的字符串

[B@106d69c

例如参见this other question on SO "UTF-8 byte[] to String" .

您可以使用 DigestUtils.md5Hex 尝试此解决方案它以字符串形式返回哈希值:

.setHeader(S3Constants.CONTENT_MD5, simple(DigestUtils.md5Hex(body())))

关于java - 如何使用 md5 通过 Camel 路由到 S3 检查文件完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40381015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com