From 6ef0a8953323ddc5bab283bbd8b413c5a2700b08 Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Sun, 3 Nov 2024 21:53:50 -0600 Subject: [PATCH] CE-1772: fix aws expecting content type if object metadata is given --- .../s3/utils/S3UploadOutputStream.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/s3/utils/S3UploadOutputStream.java b/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/s3/utils/S3UploadOutputStream.java index d786c9c1..2edfbbc3 100644 --- a/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/s3/utils/S3UploadOutputStream.java +++ b/qqq-backend-module-filesystem/src/main/java/com/kingsrook/qqq/backend/module/filesystem/s3/utils/S3UploadOutputStream.java @@ -98,8 +98,12 @@ public class S3UploadOutputStream extends OutputStream *******************************************************************************/ private void uploadIfNeeded() { - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentType(this.contentType); + ObjectMetadata objectMetadata = null; + if(this.contentType != null) + { + objectMetadata = new ObjectMetadata(); + objectMetadata.setContentType(this.contentType); + } if(offset == buffer.length) { @@ -173,8 +177,12 @@ public class S3UploadOutputStream extends OutputStream return; } - ObjectMetadata objectMetadata = new ObjectMetadata(); - objectMetadata.setContentType(this.contentType); + ObjectMetadata objectMetadata = null; + if(this.contentType != null) + { + objectMetadata = new ObjectMetadata(); + objectMetadata.setContentType(this.contentType); + } if(initiateMultipartUploadResult != null) { @@ -204,6 +212,11 @@ public class S3UploadOutputStream extends OutputStream } else { + if(objectMetadata == null) + { + objectMetadata = new ObjectMetadata(); + } + LOG.info("Putting object (non-multipart)", logPair("key", key), logPair("length", offset)); objectMetadata.setContentLength(offset); PutObjectResult putObjectResult = amazonS3.putObject(bucketName, key, new ByteArrayInputStream(buffer, 0, offset), objectMetadata);