2011-10-28 23 views
2

我讀過S3文檔幾次,我添加元數據的S3對象與此代碼...無法使用.Net API讀取Amazon S3 Object元數據,我做錯了什麼?

PutObjectRequest titledRequest = new PutObjectRequest(); 
titledRequest.WithTimeout(3600000) 
.WithMetaData("outputfolder", outputFolder) 
.WithBucketName(AWS_BUCKET_NAME) 
.WithKey(objectKey) 
.WithAutoCloseStream(true) 
.WithInputStream(fs); 

當從S3鬥閱讀對象我使用這個代碼.. ..

string outputFolder = response.Metadata["x-amz-meta-outputfolder"]; 

但是我每次都得到一個空字符串,即使outputFolder變量肯定有一個值。

我在這裏做的事情真的很糟糕嗎?至於我可以告訴大家,這是這個,而不是與文檔

回答

0

使用一致的從putobject響應讀取元

GetObjectMetadataRequest request = new GetObjectMetadataRequest() 
        .WithKey("Key") 
        .WithBucketName(""); 
GetObjectMetadataResponse response = s3Client.GetObjectMetaData(request); 
response."choose properety to retrieve" 

希望這可以幫助

-1
string outputFolder = response.Metadata["outputfolder"]; 

會做。

0

驗證碼可以正常工作。

// upload & add outputfolder to metadata 

var S3Client = new AmazonS3Client(); 

var Request = new PutObjectRequest { 
        BucketName = bucketname,Key = S3Name,FilePath = Filepath }; 

Request.Metadata.Add("outputfolder",@"C:\test"); 

PutObjectResponse Response = S3Client.PutObject(Request); 

// download and retrieve metadata 

var S3Client = new AmazonS3Client(); 

var Request = new GetObjectRequest { BucketName = bucketname,Key = S3Name }; 

GetObjectResponse Response = S3Client.GetObject(Request); 

// this works 

string outputFolder = Response.Metadata["x-amz-meta-outputfolder"]; 

// so does this - no need for the x-amz-meta- prefix 

string outputFolder = Response.Metadata["outputfolder"];