簡體   English   中英

使用java SDK在S3 AWS上傳文件時無法設置元數據

[英]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-”標頭前綴。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectMetadata.html#setUserMetadata-java.util.Map-

s3.putObject(bucketName, key, file).setMetadata(medata);

在上面的方法調用中,您要為結果設置元數據,而不是為請求設置元數據。

這將有效:

s3.putObject(bucketName, key, new FileInputStream(file),medata)  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM