2010-04-10 2 views
8

In S3 REST API I Metadaten auf ein vorhandenes Objekt unter Verwendung der PUT (Copy) Befehl und das Kopieren einer Taste auf der gleichen Stelle mit 'x-amz-metadata-directive' = 'REPLACE'ändern Content-Disposition der vorhandenen S3 Objekt

bin Hinzufügen Was ich tun möchte, es immer noch verwendet den Schlüsselnamen anstelle von ‚foo.bar‘

ich uns

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

Diese Metadaten korrekt setzt, aber wenn ich die Datei heruntergeladen werden: ist der Name Download-Datei ändern, indem sie ea Software-Tool S3 Browser die Metadaten anzeigen und es korrekt aussieht (abgesehen von 'Content-Disposition' alle niedriger sein Fall, dass das wurde S3 mich fragen, zu unterzeichnen)

Dann S3-Browser ich gerade gedrückt wird, dann speichern, ohne etwas zu ändern und jetzt funktioniert es???

Was fehlt mir, wie das Einstellen einer Metadaten 'Content-Disposition: attachment; filename=foo.bar;' von meiner Web-App nicht funktioniert, aber funktioniert von S3 Browser?

+0

Sollte diese Frage nicht eigentlich so etwas wie "Änderung der Content-Disposition eines bestehenden S3-Objekts" heißen, da dies das eigentliche Problem ist, das es zu lösen versucht? – natevw

+0

yeah macht wahrscheinlich mehr Sinn, ich habe den Titel jetzt geändert. Content-Disposition und Metadaten werden jedoch auf die gleiche Weise behandelt. – Daveo

Antwort

7

GELÖST:

Die Doco bei http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html

scheint falsch zu sein heißt es:

Beachten Sie, wie die 'x-amz-' Header werden sortiert, white-space getrimmt, umgewandelt toLowerCase, und mehrere Header mit demselben Namen wurden mit einem Komma toseparate Werte verbunden.

Beachten Sie, wie nur die Content-Type und Content-MD5HTTPentity-Header in der StringToSign angezeigt werden. Die OtherContent- * Entity-Header nicht. Allerdings muss Content-Disposition explizit festgelegt und nicht enthalten sein als: x-amz-meta-Content-Disposition

Es funktioniert jetzt gut.

+12

Sie sagen, dass alle Metadaten-Header-Namen mit "x-amz-meta-" beginnen müssen und aus Kleinbuchstaben bestehen. Du könntest es einfach sagen, anstatt uns zu bitten, zu "bemerken". – Eyal