2013-01-04 22 views
26

Per qualche motivo i file nel mio bucket S3 vengono forzati come download invece di visualizzare in linea, quindi se copio un collegamento immagine e lo incollo nella barra degli indirizzi e poi ci si avvicina, promuoverà il mio browser per scaricarlo. Invece devo effettivamente cliccare su open image per andare all'URL.File di visualizzazione AWS S3 in linea invece che forzare download

Eventuali modi per cambiare il modo in cui i file sono serviti da S3

+0

Quando si copia il collegamento immagine, punta direttamente all'URL dell'immagine. Il browser semplicemente capisce di eseguire l'URL fornito. –

+0

@SunilGulabani Ma ho visto siti che utilizzano amazon s3 che consentono di accedere direttamente al file senza dover forzare il download del file. Ad esempio, i siti di hosting di immagini consentono l'accesso diretto alle immagini. Mi riferisco al file-path diretto qui è un esempio questo è un file ospitato nel mio bucket S3: https://droplet-files.s3.amazonaws.com/7c32280bbcb1d3e67ac799ce9c71212f.JPG –

+1

Penso che il tipo di contenuto fornito sarà sbagliato mentre caricare l'immagine. Deve essere image/jpeg. Controlla il tipo di contenuto: http://en.wikipedia.org/wiki/Internet_media_type –

risposta

23

è necessario modificare il Content-Type. Dalla console S3, fare clic con il tasto destro sull'oggetto e selezionare Proprietà, quindi è in Metadata. È anche possibile farlo a livello di programmazione: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/change_content_type

+1

Vedo, stavo usando $ s3-> putObjectFile ($ tmp, $ bucket, $ actual_image_name , S3 :: ACL_PUBLIC_READ) prima, ma per qualche ragione ricordo di aver fatto lo stesso che voglio ottenere con l'uso della politica bucket –

+1

@Cl 'puoi anche [impostare il tipo di contenuto nel 'metodo putObject()' (http: //undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation#putObject) (come 'putObjectFile()' è legacy ora). – mathielo

21
$client->putObject(array(
     'Bucket'  => 'buckname', 
     'Key'  => $destination, 
     'SourceFile' => $source, 
     'ContentType' =>'image/jpeg', //<-- this is what you need! 
     'ACL'   => 'public-read'//<-- this makes it public so people can see it 
    )); 
Problemi correlati