2013-01-04 17 views
26

Z jakiegoś powodu pliki w moim wiadrze S3 są wymuszane jako pobrane zamiast wyświetlania w linii, więc jeśli skopiuję link do obrazu i wkleję go do paska adresu, a następnie przejdź do niego, będzie promować moją przeglądarkę, aby ją pobrać. Zamiast tego muszę kliknąć otwarty obraz, aby przejść do adresu URL.Plik z obrazem AWS S3 wbudowany zamiast wymuszania pobrania

Wszelkie sposoby, aby zmienić sposób, w jaki pliki są podawane od S3

+0

Kiedy kopiujesz łącze do obrazu, wskazuje ono bezpośrednio adres URL obrazu. Przeglądarka po prostu rozumie, aby wykonać podany adres URL. –

+0

@SunilGulabani Ale widziałem strony za pomocą Amazon S3, które pozwalają na dostęp do pliku bezpośrednio, bez konieczności wymuszania pobierania pliku. Na przykład witryny hostingu obrazów umożliwiają bezpośredni dostęp do obrazu. Mam na myśli bezpośrednią ścieżkę do pliku, tutaj jest to przykład pliku przechowywanego w moim kubełku S3: https://droplet-files.s3.amazonaws.com/7c32280bbcb1d3e67ac799ce9c71212f.JPG –

+1

Myślę, że Twój typ zawartości będzie nieprawidłowy podczas przesłanie obrazu. Musi to być image/jpeg. Sprawdź dla typu zawartości: http://en.wikipedia.org/wiki/Internet_media_type –

Odpowiedz

23

Trzeba zmienić Content-Type. Z poziomu konsoli S3 kliknij obiekt prawym przyciskiem myszy i wybierz Właściwości, a następnie Metadane. Możesz to również zrobić programowo: http://docs.amazonwebservices.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/change_content_type

+1

Widzę, że używałem $ s3-> putObjectFile ($ tmp, $ bucket, $ actual_image_name , S3 :: ACL_PUBLIC_READ) wcześniej, ale z jakiegoś powodu przypominam sobie, że robię to samo, co chcę osiągnąć przy użyciu polityki bucket –

+1

@ Cl 'można również [ustawić typ zawartości metodą 'putObject()' (http: //undesigned.org.za/2007/10/22/amazon-s3-php-class/documentation#putObject) (jako 'putObjectFile()' jest już starszą wersją). – 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 
    ));