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

Omm*_*awn 2 java metadata amazon-s3 aws-sdk

使用适用于 Java 的 AWS 开发工具包版本 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();
Run Code Online (Sandbox Code Playgroud)

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

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

Content-Type=application/octet-stream
x-amz-meta-content-type=image/jpeg
Run Code Online (Sandbox Code Playgroud)

那么...我怎样才能设置元数据来实现像这样的一种元数据?:

Content-Type=image/jpeg
Run Code Online (Sandbox Code Playgroud)

谢谢!

Omm*_*awn 7

看起来更简单:

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