2011-01-20 17 views
16

Esto me está volviendo loco. Estoy cargando imágenes a S3 usando el SDK de php. Cada vez que navego por la URL de la imagen, el navegador descarga la imagen y no la muestra.amazon s3 - descarga de imágenes en lugar de mostrar en el navegador

Creo que es algo que tiene que ver con el tipo de contenido.

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

¿Me puede ayudar?

gracias

+0

Podría publicar una muestra de la URL de la imagen? – MrEyes

+0

Tal vez intente cambiar el tipo de contenido a 'image/jpg' (suponiendo que jpg por supuesto)? http://www.w3schools.com/media/media_mimeref.asp – horatio

Respuesta

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

Aquellos que usan AWS SDK para PHP 3.x con putObject() el caso es diferente para las claves. Será 'ContentType' y 'ACL'. – John

13

Su tipo de contenido es incorrecto. Tiene que ser image/jpeg para JPG, por ejemplo. Ver este sitio para obtener una lista: http://en.wikipedia.org/wiki/Internet_media_type

+0

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

2

a trabajar en su propia, aparentemente válida, suposición de que es el tipo de contenido:

Es necesario establecer el tipo de contenido correcto para la imagen de ser cargados, la siguiente lista contiene todos los tipos más comunes

* 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 

Así que una reanudación de su código de ejemplo para una carga png:

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

cambió el tipo de contenido a image/jpg y sigue recibiendo el diálogo de descarga – drs

+0

¿Podría publicar una muestra de la url de la imagen? – MrEyes

+0

RESUELTO. Necesidad de agregar la clave fileUpload. – drs

2

imágenes URL Si está trabajando utilizan

'ContentType' => mime_content_type($absolutePathToImage), 

en lugar de

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