web-dev-qa-db-ja.com

アマゾンs3-ブラウザーに表示する代わりに画像をダウンロード

これは私を怒らせています。 phpSDKを使用してS3に画像をアップロードしています。画像のURLを参照するたびに、ブラウザは画像を表示するのではなくダウンロードします。

コンテンツタイプと関係があると思います。

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

手伝ってくれますか?

ありがとう

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

あなたのコンテンツタイプは確かに間違っています。たとえば、JPGの場合はimage/jpegである必要があります。リストについては、このサイトを参照してください: http://en.wikipedia.org/wiki/Internet_media_type

14
jschorr

コンテンツタイプであると想定して、有効であると思われる独自の作業を行う:

アップロードする画像の正しいコンテンツタイプを設定する必要があります。次のリストには、最も一般的なタイプがすべて含まれています

* 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
));
2
MrEyes

RL画像を使用している場合は使用

'ContentType'  => mime_content_type($absolutePathToImage),

の代わりに

$_FILES['image']['type']
2
hakiko