Я переношу свой код из AWS PHP SDK1 в SDK2 (https://github.com/aws/aws-sdk-php).
У меня есть загрузчик изображений. В моей предыдущей версии я бы указал Content-Type моего изображения следующим образом:
$response = $this->s3->create_object(
$bucket,
$key,
array(
'fileUpload'=>$file_resource,
'contentType'=>$mime,
'acl' => AmazonS3::ACL_PUBLIC,
)
);
Это моя новая версия:
$response = $this->s3->upload(
$bucket,
$key,
$file_resource,
'public-read',
array('params' => array('Metadata' => array('ContentType'=>$mime)))
);
Я пробовал разные варианты написания ContentType, на сайте S3 оно изменяет имя, чтобы оно выглядело как «x-amz-meta-contenttype», а значение «Content-Type» по умолчанию — «двоичный/октетный поток».
Я также пытался использовать функцию EntityBody, но те же результаты:
$response = $this->s3->upload(
$this->bucket,
$to,
EntityBody::factory($file_resource),
'public-read',
array('params' => array('Metadata' => array('ContentType'=>$mime)))
);
Как установить тип контента в этом новом API?
РЕДАКТИРОВАТЬ: я вижу где-то в документации:
AWS SDK для PHP попытается автоматически определить наиболее подходящий заголовок Content-Type, используемый для хранения объекта. Если вы используете менее распространенное расширение файла и ваш заголовок Content-Type не добавляется автоматически, вы можете добавить заголовок Content-Type, передав в операцию параметр ContentType.
Во-первых, я загружаю простые изображения, но, согласно моей панели управления S3, они загружаются как «двоичный/октетный поток». Что касается их второго пункта, я пробовал много комбинаций массивов с ContentType. Я не уверен, почему это не работает...