Подтвердить что ты не робот

Amazon s3 - загрузка изображений вместо отображения в браузере

Это сводит меня с ума. Я загружаю изображения на S3 с помощью php SDK. Всякий раз, когда я просматриваю URL-адрес изображения, браузер загружает изображение, противоположное его отображению.

Я думаю, что это как-то связано с типом контента.

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

Вы можете помочь?

спасибо

4b9b3361

Ответ 1

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

Ответ 2

В действительности ваш тип контента ошибочен. Например, для JPG должно быть изображение /jpeg. См. Этот сайт для списка: http://en.wikipedia.org/wiki/Internet_media_type

Ответ 3

Работайте самостоятельно, казалось бы, правильно, предположив, что это тип контента:

Вам нужно установить правильный тип контента для загружаемого изображения, следующий список содержит все наиболее распространенные типы

* 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

Итак, переработайте свой пример кода для загрузки png:

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

Ответ 4

Если вы работаете с изображениями URL, используйте

'ContentType'  => mime_content_type($absolutePathToImage),

вместо

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