我试图设置用户定义的元数据,同时上传一个文件上的S3 aws.但它不工作..这里是我的代码的一部分:
AmazonS3 s3 = new AmazonS3Client(credentials);
Map<String, String> metaList = new HashMap<>();
metaList.put("x-amz-meta-example", "true");
ObjectMetadata medata = new ObjectMetadata();
medata.setUserMetadata(metaList);
String bucketName = "bucketName";
String key = "objKey";
File file = new File("example.txt");
try{
s3.putObject(bucketName, key, file)
.setMetadata(medata);
System.out.println("Successfully uplooaded...");
}catch(Exception e){
System.out.println(e.getMessage());
}
在AWS控制台中,文件上传成功。但是当我检查元数据时,我没有看到我设置的元数据。
4条答案
按热度按时间voase2hg1#
在SDK中,不设置“x-amz-meta-BLAH”
Amazon S3可以通过在内部将元数据表示为前缀为“x-amz-meta-"的HTTP头来存储对象上的附加元数据。使用user-metadata可以在Amazon S3中将任意元数据与其数据一起存储。在设置用户元数据时,**调用者不应包含内部“x-amz-meta-”前缀;**此库将为它们处理此问题。同样,当调用方检索自定义用户元数据时,它们将看不到“x-amz-meta-”头前缀。
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectMetadata.html#setUserMetadata-java.util.Map-
xpcnnkqh2#
这适用于aws sdk 1.11.x
qaxu7uf23#
8dtrkrch4#
在上面的方法调用中,您将元数据设置为结果,而不是请求。
这将起作用: