2010-02-26 24 views
2

我有代碼寫入s3桶的東西。使用Amazon S3元數據鍵是前綴,如何避免這種情況?

AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKeyID, secretAccessKeyID); 

GetObjectRequest request = new GetObjectRequest().WithBucketName(bucketName).WithKey(keyName); 

    string title = response.Metadata.Get("Eip1"); 

但得到回報空

PutObjectRequest titledRequest = new PutObjectRequest(); 
titledRequest.WithMetaData("Eip1", "Volume-1") 
.WithMetaData("Eip2", "Volume-2") 
.WithContentBody("this is an Elastic IP Address Details for a Volumes") 
    .WithBucketName(bucketName) 
.WithKey(keyName); 

和閱讀,調試,當我看到response.Metadata.Keys有

X-AMZ-元eip1
& X- amz-meta-eip2

如何更改這些鍵,如何避免這種情況?

爲什麼他們正在前綴X-AMZ-薈萃

回答

1

如果您使用.WithMetadata,s3客戶端總是以x-amz-meta爲元數據前綴。如果你想指定系統元數據,如緩存控制標題,請在請求中使用.AddHeaders:

  var rq = (PutObjectRequest) new PutObjectRequest() 
              .WithKey(fileName) 
              .WithBucketName(BucketName) 
              .WithCannedACL(S3CannedACL.PublicRead) 
              .WithInputStream(source); 
      rq.AddHeaders(new WebHeaderCollection 
           { 
            {HttpRequestHeader.CacheControl, "no-cache"} 
           }); 
相關問題