0
S3にアップロードする前に、各ファイルのMD5を計算しています。私がZipSplitterで使用しているとき、私はそれぞれの解凍されたファイルのMD5を別々に計算したいと思う。 Exchange.getIn()
は、単一の解凍されたファイルではなく、zipファイル全体を返します。Camel ZipSplitter - 解凍したファイルのファイル内容を取得するには?
from(source).choice().when(isZipFile)
.split(new ZipSplitter())
.streaming()
.process(md5HeadersProcessor)
.process(camelS3HeadersProcessor)
.to(destination)
.log("Uploading file ${file:name} completed...")
.end()
.endChoice()
MD5HeadersProcessor:
@Override
public void process(Exchange exchange) throws NoSuchAlgorithmException {
byte[] bytes = exchange.getIn().getBody(byte[].class);
exchange.getIn().setHeader(S3Constants.CONTENT_MD5, getMD5(bytes));
}
CamelS3HeadersProcessor:
@Override
public void process(Exchange exchange) throws Exception {
SimpleBuilder simpleBuilder = new SimpleBuilder("${file:onlyname}");
String fileName = simpleBuilder.evaluate(exchange, String.class);
exchange.getIn().setHeader(S3Constants.KEY, fileName);
}
私はCamelS3HeadersProcessor
で解凍したファイル名を設定することができています。解凍されたファイルの内容をどうすればMD5HeadersProcessor
に取得できますか?