[英]Unable to set metadata while uploading file on S3 AWS using java SDK
我正在嘗試在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控制台中,文件已成功上載。 但是當我檢查metaData時,我沒有看到我設置的元數據。
這適用於aws sdk 1.11.x
ObjectMetadata metadata = new ObjectMetadata();
metadata.setCacheControl("max-age=2592000, must-revalidate");
PutObjectResult s3putObj = s3client.putObject(new PutObjectRequest(s3bucket,
filePath,
filetoupload)
.withMetadata(metadata)//set metadata
.withCannedAcl(CannedAccessControlList.PublicRead));
在SDK中它說不要設置“x-amz-meta-BLAH”
Amazon S3可以通過在內部將其表示為前綴為“x-amz-meta-”的HTTP頭來存儲對象的其他元數據。 使用用戶元數據在Amazon S3中存儲任意元數據及其數據。 設置用戶元數據時, 呼叫者不應包含內部“x-amz-meta-”前綴; 這個庫將為他們處理。 同樣,當調用者檢索自定義用戶元數據時,他們將看不到“x-amz-meta-”標頭前綴。
s3.putObject(bucketName, key, file).setMetadata(medata);
在上面的方法調用中,您要為結果設置元數據,而不是為請求設置元數據。
這將有效:
s3.putObject(bucketName, key, new FileInputStream(file),medata)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.