在 AWS S3 Java SDK 中设置对象元数据

Set object metadata in AWS S3 Java SDK

使用 Java 的 AWS SDK 版本 2,我正在尝试为我上传的对象设置内容类型元数据。

我使用此代码上传图片:

S3Client s3Client = S3Client.builder().
                        region(MY_REGION).
                        credentialsProvider(MY_CREDENTIALS).
                        build();

Map<String, String> image_metadata = new HashMap<>();
image_metadata.put("Content-Type", "image/jpeg");

PutObjectRequest request = PutObjectRequest.builder().
                    bucket(MY_BUCKET).
                    key(remoteDir + remoteFileName).
                    acl(ObjectCannedACL.PUBLIC_READ).
                    storageClass(StorageClass.STANDARD).
                    metadata(image_metadata).
                    build();

如果我不设置元数据方法,对象内容类型将被 AWS 猜测,我发现每个图像都显示为“application/octet-stream”而不是“image/jpeg” .

但是当设置了元数据方法时,对象出现了 2 个元数据:

Content-Type=application/octet-stream
x-amz-meta-content-type=image/jpeg

所以...我如何设置元数据以实现只有一个元数据?:

Content-Type=image/jpeg

谢谢!

看起来更简单:

PutObjectRequest request = PutObjectRequest.builder().
                    bucket(MY_BUCKET).
                    key(remoteDir + remoteFileName).
                    acl(ObjectCannedACL.PUBLIC_READ).
                    storageClass(StorageClass.STANDARD).
                    contentType("image/jpeg").
                    build();