2010-04-10 6 views
8

In S3 REST API Io sono l'aggiunta di metadati a un oggetto esistente utilizzando il PUT (copia) di comando e la copia di una chiave per la stessa posizione con 'x-amz-metadata-directive' = 'REPLACE'Change Content-Disposition dell'oggetto S3 esistente

Quello che voglio fare è cambiare il nome del file di download impostando:

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

Questa imposta correttamente i metadati, ma quando ho scaricato il file, utilizza ancora il nome della chiave invece di 'foo.bar'

io siamo EA strumento software S3 Browser per visualizzare i metadati e sembra corretto (a parte 'Content-Disposition' essere tutto in minuscolo come quella di stato S3 mi chiedono di firmare)

Quindi, utilizzando Browser S3 ho appena premuto, quindi salvare senza cambiare nulla e ora funziona???

Cosa mi manca come mai l'impostazione di un metadata 'Content-Disposition: attachment; filename=foo.bar;' dalla mia app Web non funziona ma funziona da S3 Browser?

+0

Questa domanda non dovrebbe in realtà essere intitolata "Modifica contenuto-Disposizione dell'oggetto S3 esistente", poiché questo è il problema effettivo che sta tentando di risolvere? – natevw

+0

sì, probabilmente ha più senso, ora ho cambiato il titolo. Tuttavia Content-Disposition e metadati sono trattati allo stesso modo – Daveo

risposta

7

risolto:

Il Doco a http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?RESTAuthentication.html

sembra essere sbagliato si dice:

Notate come le intestazioni 'x-amz-' sono ordinati, white-space tagliati, convertito toLowerCase, e più intestazioni con lo stesso nome sono state unite usando valori virgola toseparate.

Nota come solo le intestazioni Content-Type e Content-MD5HTTPentity vengono visualizzate in StringToSign. Le intestazioni di entità otherContent- * non lo fanno. Tuttavia Content-Disposition deve essere impostato in modo specifico e non incluso come: x-amz-meta-Content-Disposition

Ora funziona correttamente.

+12

Nel tuo round round, stai dicendo che tutti i nomi delle intestazioni dei metadati devono iniziare con "x-amz-meta-" ed essere tutti in minuscolo. Potresti semplicemente dirlo invece di chiederci di "notare". – Eyal