[英]How to set the content type of an S3 object via the SDK?
我正在尝试使用 AWS Api 设置多个对象的内容类型并向它们添加“内容编码:gzip”标头。 这是我这样做的代码:
for (S3ObjectSummary summary : objs.getObjectSummaries() )
{
String key = summary.getKey();
if (! key.endsWith(".gz"))
continue;
ObjectMetadata metadata = new ObjectMetadata();
metadata.addUserMetadata("Content-Encoding", "gzip");
metadata.addUserMetadata("Content-Type", "application/x-gzip");
final CopyObjectRequest request = new CopyObjectRequest(bucket, key, bucket, key)
.withSourceBucketName( bucket )
.withSourceKey(key)
.withNewObjectMetadata(metadata);
s3.copyObject(request);
}
但是,当我运行它时,结果如下:
如您所见,前缀x-amz-meta
已添加到我的自定义标头中,并且它们是小写的。 并且content-type
标头被忽略,而是将www/form-encoded
作为标头。
我该怎么做才能让它接受我的标头值?
发现问题了。 ObjectMetadata
要求显式设置内容类型/编码,而不是通过addUserMetadata()
。 更改以下内容:
metadata.addUserMetadata("Content-Encoding", "gzip");
metadata.addUserMetadata("Content-Type", "application/x-gzip");
到:
metadata.setContentEncoding("gzip");
metadata.setContentType("application/x-gzip");
修复了这个。
在 SDK V2 中,使用:
PutObjectRequest.builder()
...
.contentType(contentType)
.build()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.