2010-02-26 2 views
2

У меня есть код, который пишет что-то в ведро s3.Ключ метаданных Amazon S3, префикс, как этого избежать?

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); 

и читать его с помощью

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

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

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

но получить нулевой взамен, когда отлаживается я увидел response.Metadata.Keys есть

х-АМЗ-мета-EIP1
& x- amz-meta-eip2

Как эти ключи переименовываются, как этого избежать?

Почему они в настоящее время с префиксом х АМЗ-мета-

ответ

1

Если вы use .WithMetadata, клиент s3 всегда префикс метаданных с помощью x-amz-meta. Если вы хотите указать системные метаданные, такие как заголовки Cache Control, используйте .AddHeaders по запросу:

  var rq = (PutObjectRequest) new PutObjectRequest() 
              .WithKey(fileName) 
              .WithBucketName(BucketName) 
              .WithCannedACL(S3CannedACL.PublicRead) 
              .WithInputStream(source); 
      rq.AddHeaders(new WebHeaderCollection 
           { 
            {HttpRequestHeader.CacheControl, "no-cache"} 
           }); 
Смежные вопросы