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