You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/10/13 15:58:50 UTC
[camel] 01/04: CAMEL-15678: camel-aws2-s3 multipart upload
multiplies file by number of parts * change multipart upload to use
inputStream
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 24c68383d9b04c6c5156cdf273fe9161a274b21e
Author: Kiril Nugmanov <ki...@zenitech.co.uk>
AuthorDate: Tue Oct 13 15:50:17 2020 +0300
CAMEL-15678: camel-aws2-s3 multipart upload multiplies file by number of parts
* change multipart upload to use inputStream
---
.../org/apache/camel/component/aws2/s3/AWS2S3Producer.java | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
index b45cdc2..46f0d5c 100644
--- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
+++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
@@ -70,6 +70,8 @@ import software.amazon.awssdk.services.s3.model.UploadPartRequest;
/**
* A Producer which sends messages to the Amazon Web Service Simple Storage Service
* <a href="http://aws.amazon.com/s3/">AWS S3</a>
+ *
+ * @author Kiril Nugmanov
*/
public class AWS2S3Producer extends DefaultProducer {
@@ -200,10 +202,14 @@ public class AWS2S3Producer extends DefaultProducer {
.partNumber(part).build();
LOG.trace("Uploading part [{}] for {}", part, keyName);
- String etag = getEndpoint().getS3Client().uploadPart(uploadRequest, RequestBody.fromFile(filePayload)).eTag();
- CompletedPart partUpload = CompletedPart.builder().partNumber(part).eTag(etag).build();
- completedParts.add(partUpload);
- filePosition += partSize;
+ try (InputStream fileInputStream = new FileInputStream(filePayload)) {
+ fileInputStream.skip(filePosition);
+
+ String etag = getEndpoint().getS3Client().uploadPart(uploadRequest, RequestBody.fromInputStream(fileInputStream, partSize)).eTag();
+ CompletedPart partUpload = CompletedPart.builder().partNumber(part).eTag(etag).build();
+ completedParts.add(partUpload);
+ filePosition += partSize;
+ }
}
CompletedMultipartUpload completeMultipartUpload = CompletedMultipartUpload.builder().parts(completedParts).build();
CompleteMultipartUploadRequest compRequest