In S3 REST API I am adding metadata to an existing object by using the PUT (Copy) command and copying a key to the same location with 'x-amz-metadata-directive' = 'REPLACE'

What I want to do is change the download file name by setting:

Content-Disposition: attachment; filename=foo.bar;

This sets the metadata correctly but when I download the file it still uses the key name instead of 'foo.bar'

I use a software tool S3 Browser to view the metadata and it looks correct (apart from 'Content-Disposition' being all lower case as that's was S3 ask me to sign)

Then using S3 Browser I just pressed, then save without changing anything and now it works???

What am I missing how come setting a metadata 'Content-Disposition: attachment; filename=foo.bar;' from my web app does not work but does work from S3 Browser?

share
    
Shouldn't this question actually be titled something like "Change Content-Disposition of existing S3 object", since that is the actual problem it is trying to solve? – natevw Jan 21 '11 at 1:09
    
yeah probably makes more sense, I have changed the title now. However Content-Disposition and metadata are treated the same way – Daveo Jan 22 '11 at 6:44
up vote 7 down vote accepted

SOLVED:

The Doco at http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html

seems to be wrong it says:

Notice how the 'x-amz-' headers are sorted, white-space trimmed, converted tolowercase, and multiple headers with the same name have been joined using a comma toseparate values.

Note how only the Content-Type and Content-MD5HTTPentity headers appear in the StringToSign .The otherContent-* entity headers do not. However Content-Disposition must be set specifically and not included as : x-amz-meta-Content-Disposition

It now works fine.

share
11  
In your round-about way, you're saying that all metadata header names must start with "x-amz-meta-" and be all lowercase. You could've just say it instead of asking us to "notice". – Eyal Sep 19 '12 at 22:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.