2013-01-04 4 views
26

Aus irgendeinem Grund werden Dateien in meinem S3-Bucket als Downloads gezwungen, anstatt in-line anzuzeigen, wenn ich also einen Bildlink kopieren und in die Adressleiste einfügen und dann dorthin navigieren, Es wird meinen Browser zum Download einladen. Stattdessen muss ich auf das geöffnete Bild klicken, um zur URL zu gelangen.AWS S3 Display-Datei inline statt zwingen Download

Alle Möglichkeiten, um die Art und Weise Dateien werden serviert von S3

+0

Wenn Sie Image Link kopieren, verweist es direkt auf die Bild-URL. Der Browser versteht einfach, die angegebene URL auszuführen. –

+0

@SunilGulabani Aber ich habe Websites mit Amazon s3 gesehen, mit denen Sie direkt auf die Datei zugreifen können, ohne die Datei herunterladen zu müssen. Zum Beispiel ermöglichen Bild-Hosting-Sites einen direkten Bildzugriff. Ich beziehe mich auf direkten Datei-Pfad hier ist ein Beispiel das ist eine Datei in meinem S3-Bucket gehostet: https://drill-files.s3.amazonaws.com/7c32280bbcb1d3e67ac799ce9c71212f.JPG –

+1

Ich denke, Ihr Inhaltstyp zur Verfügung gestellt wird falsch sein während das Bild hochladen. Es muss image/jpeg sein. Suche nach Inhalt-Typ: http://en.wikipedia.org/wiki/Internet_media_type –

Antwort

23

Sie ändern müssen den Content-Type ändern. Klicken Sie in der S3-Konsole mit der rechten Maustaste auf das Objekt und wählen Sie Eigenschaften, dann befindet es sich unter Metadaten. Sie können es auch programmgesteuert tun: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/change_content_type

+1

Ich sehe $ s3-> putObjectFile ($ tmp, $ bucket, $ actual_image_name , S3 :: ACL_PUBLIC_READ) vor, aber aus irgendeinem Grund erinnere ich mich daran, dasselbe zu tun, das ich mit der Verwendung der Bucket-Richtlinie erreichen möchte –

+1

@Cl 'Sie können auch [content-type in 'putObject()' Methode] (http: //undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation#putObject) (da 'putObjectFile()' jetzt veraltet ist). – 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 
    ));