13

Amazon SDK for PHP を使用して、画像に Cache-control ヘッダーを設定しようとしています。MetaData = array("Cache-Control") で追加しようとすると、S3 バケットにログインすると x-amz-meta-cache-control に変更され、ファイルをダウンロードするとキャッシュがありません・コントロールセット。しかし、この設定を手動で変更すると、キャッシュ コントロールは完全に機能します。アップロード時に HTTP リクエスト ヘッダーをプログラムで設定するために使用できる、不足しているパラメーターはありますか? PutObject メソッドを使用しています。AWS SDK は 2013 年のものだと思います。

4

2 に答える 2

15

バケットに既にある項目にヘッダーを追加する場合CacheControlは、SDK のcopyObjectメソッドを使用します。MetadataDirectiveパラメータを REPLACE に設定して、アイテムがそれ自体を上書きするようにします。

1 つの奇妙なことに気付きました:ContentType既に設定されているにもかかわらず、ヘッダーも設定する必要がありました。そうしないと、画像はブラウザーにインラインで表示されず、ダウンロードとして提供されます。

$result = $s3->copyObject(array(
    'ACL' => 'public-read',
    'Bucket' => $bucket, // target bucket
    'CacheControl' => 'public, max-age=86400',
    'ContentType' => 'image/jpeg', // !!
    'CopySource' => urlencode($bucket . '/' . $key),
    'Key' => $key, // target file name
    'MetadataDirective' => 'REPLACE'
));
于 2015-03-18T09:09:54.003 に答える