2011-01-20 10 views
16

To doprowadza mnie do szału. Przesyłam obrazy do S3 przy użyciu php SDK. Ilekroć przeglądam adres URL obrazu, przeglądarka pobiera obraz przeciwny do jego wyświetlania.amazon s3 - pobieranie obrazu zamiast wyświetlania w przeglądarce

Myślę, że ma to coś wspólnego z typem treści.

 // Prepare to upload the file to S3 bucket. 
     $s3->create_object($bucket, $file_name, array(
       'contentType' => 'binary/octet-stream', 
       'acl' => AmazonS3::ACL_PUBLIC 
     )); 

Czy możesz pomóc?

dzięki

+0

Could you post próbkę URL obrazu? – MrEyes

+0

Być może spróbuj zmienić typ zawartości na "image/jpg" (zakładając oczywiście, że jpg)? http://www.w3schools.com/media/media_mimeref.asp – horatio

Odpowiedz

15
  $s3->create_object($bucket, $file_name, array(
        'fileUpload' => $resized_image, 
        'contentType' => $_FILES['image']['type'], 
        'acl' => AmazonS3::ACL_PUBLIC 
      )); 
+0

Użytkownicy używający pakietu AWS SDK dla PHP 3.x z putObject() wielkość liter jest różna dla kluczy. Będzie to "ContentType" i "ACL". – John

13

Twój typ zawartości jest rzeczywiście źle. Musi to być np. Image/jpeg dla JPG. Zobacz tę stronę do listy: http://en.wikipedia.org/wiki/Internet_media_type

+0

$ s3-> create_object ($ bucket, $ nazwa_pliku, tablica ( 'fileUpload' => $ resized_image, 'contentType' => $ _FILES ['image '] [' type '], ' acl '=> AmazonS3 :: ACL_PUBLIC )); – drs

2

Praca na własną rękę, pozornie ważnego, zakładając, że jest to typ treści:

trzeba ustawić poprawny typ zawartości dla obrazu jest przekazywanie, poniższa lista zawiera wszystkie najbardziej popularnych typów

* image/gif: GIF image 
* image/jpeg: JPEG JFIF image 
* image/png: Portable Network Graphics 
* image/svg+xml: SVG vector image 
* image/tiff: Tag Image File Format 
* image/vnd.microsoft.icon: ICO image 

Więc przerobienie swojego kodu próbki do przesłania png:

// Prepare to upload the file to S3 bucket. 
$s3->create_object($bucket, $file_name, array(
      'contentType' => 'image/png', 
      'acl' => AmazonS3::ACL_PUBLIC 
)); 
+0

zmienił typ zawartości na image/jpg i nadal pobiera komunikat do pobrania. – drs

+0

Czy możesz przesłać próbkę adresu URL obrazu? – MrEyes

+0

ROZWIĄZANE. Musisz dodać klucz fileUpload. – drs

2

Jeśli pracują zdjęć URL użyć

'ContentType' => mime_content_type($absolutePathToImage), 

zamiast

$_FILES['image']['type']