services example aws amazon-web-services amazon-s3 aws-php-sdk

amazon-web-services - example - aws/aws-sdk-php



Especifique el tipo de contenido en la funciĆ³n de carga de AWS PHP (2)

  1. Bueno, usar AWS / S3 / S3Client :: putObject () directamente definitivamente le daría el control que necesita.

  2. Las extensiones de archivo deben estar en minúsculas para que la detección automática funcione.

  3. Puede encontrar la lista de tipos de mime admitidos en Guzzle / Http / Mimetypes .

Estoy migrando mi código de AWS PHP SDK1 a SDK2 ( https://github.com/aws/aws-sdk-php ).

Tengo un cargador de imágenes. En mi versión anterior, especificaba el tipo de contenido de mi imagen así:

$response = $this->s3->create_object( $bucket, $key, array( ''fileUpload''=>$file_resource, ''contentType''=>$mime, ''acl'' => AmazonS3::ACL_PUBLIC, ) );

Esta es mi nueva versión:

$response = $this->s3->upload( $bucket, $key, $file_resource, ''public-read'', array(''params'' => array(''Metadata'' => array(''ContentType''=>$mime))) );

He intentado deletrear diferentes tipos de ContentType, en el sitio S3 modifica el nombre para que parezca ''x-amz-meta-contenttype'', mientras que el valor de ''Content-Type'' es el ''binary / octet-stream'' predeterminado.

También intenté usar la función EntityBody, pero con los mismos resultados:

$response = $this->s3->upload( $this->bucket, $to, EntityBody::factory($file_resource), ''public-read'', array(''params'' => array(''Metadata'' => array(''ContentType''=>$mime))) );

¿Cómo configuro el tipo de contenido en esta nueva API?

EDITAR: veo algo en la documentación:

El AWS SDK para PHP intentará determinar automáticamente el encabezado Content-Type más apropiado utilizado para almacenar el objeto. Si está utilizando una extensión de archivo menos común y su encabezado Content-Type no se agrega automáticamente, puede agregar un encabezado Content-Type pasando una opción ContentType a la operación.

En primer lugar, estoy cargando imágenes simples, pero según mi panel S3, se cargan como ''binary / octet-stream''. Sobre su segundo punto, he intentado muchas combinaciones de matrices con ''ContentType''. No estoy seguro de por qué no está funcionando ...


Al final, este conjunto de opciones funcionó:

array(''params'' => array(''ContentType'' => $mime))

Sin necesidad de metadatos