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 17:38:06 UTC
[camel] 01/02: 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 CAMEL-15678-3.4.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2881b3fe7bfbcf928f1ef14b93d2b2f5b4c658c9
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
---
.../apache/camel/component/aws2/s3/AWS2S3Producer.java | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 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 7f37aa2..b834609 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
@@ -68,8 +68,10 @@ import software.amazon.awssdk.services.s3.model.PutObjectResponse;
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>
+ * 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 {
@@ -197,10 +199,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 = CompleteMultipartUploadRequest.builder().multipartUpload(completeMultipartUpload)