CE-1772: fix aws expecting content type if object metadata is given

This commit is contained in:
Tim Chamberlain
2024-11-03 21:53:50 -06:00
parent ce50120234
commit 6ef0a89533

View File

@ -98,8 +98,12 @@ public class S3UploadOutputStream extends OutputStream
*******************************************************************************/ *******************************************************************************/
private void uploadIfNeeded() private void uploadIfNeeded()
{ {
ObjectMetadata objectMetadata = new ObjectMetadata(); ObjectMetadata objectMetadata = null;
objectMetadata.setContentType(this.contentType); if(this.contentType != null)
{
objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(this.contentType);
}
if(offset == buffer.length) if(offset == buffer.length)
{ {
@ -173,8 +177,12 @@ public class S3UploadOutputStream extends OutputStream
return; return;
} }
ObjectMetadata objectMetadata = new ObjectMetadata(); ObjectMetadata objectMetadata = null;
objectMetadata.setContentType(this.contentType); if(this.contentType != null)
{
objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(this.contentType);
}
if(initiateMultipartUploadResult != null) if(initiateMultipartUploadResult != null)
{ {
@ -204,6 +212,11 @@ public class S3UploadOutputStream extends OutputStream
} }
else else
{ {
if(objectMetadata == null)
{
objectMetadata = new ObjectMetadata();
}
LOG.info("Putting object (non-multipart)", logPair("key", key), logPair("length", offset)); LOG.info("Putting object (non-multipart)", logPair("key", key), logPair("length", offset));
objectMetadata.setContentLength(offset); objectMetadata.setContentLength(offset);
PutObjectResult putObjectResult = amazonS3.putObject(bucketName, key, new ByteArrayInputStream(buffer, 0, offset), objectMetadata); PutObjectResult putObjectResult = amazonS3.putObject(bucketName, key, new ByteArrayInputStream(buffer, 0, offset), objectMetadata);