2

S3 から画像などのオブジェクトをストリーミングするためのAWS SDK for PHPのv2 用のガイドがあります。そのガイドでは、それは参照しています-とSDK の v3 には存在しないようです。$command->getResponse()->getHeaders()getResponse()getHeaders()

v3 のストリーム ラッパーのドキュメントでは、ヘッダーの取得について言及していません。パスを使用してネイティブ PHPget_headers()を試しましたが、返されます(エラーはありません)。試してみると、ヘッダーを取得できます。s3://falseget_headers($fullurl)

s3://AWS SDK for PHP のバージョン 3 のストリーミングパスを使用してオブジェクトのヘッダーを取得するにはどうすればよいですか? 完全な URL を使用すると、プライベート ファイルがあるシナリオで機能します。

ドキュメントが参照している他のネイティブ PHP 関数のいくつかを実行すると、パスを使用して値が正しく返されますs3://。ヘッダーの SDK メソッド呼び出しがある可能性がありますが、見つかりません。

$s3->registerStreamWrapper();

$headers = get_headers('s3://my-files/' . $filepath);
//$headers === false

$headers = get_headers('http://my-files.s3.amazonaws.com/' . $filepath);
//$headers correctly retrieves all the headers
4

2 に答える 2

-1

1 つの解決策は、最も効率的な方法とは思えませんが、うまくいきget_headers($fullurl)ます。

プライベート ファイルにアクセスする必要がある場合があるため、すべてのユーザーに URL アクセスを許可する署名付き URL を取得し、それからget_headers()実行することができます。

$s3getobject = $s3->getCommand('GetObject', [
    'Bucket' => 'my-files',
    'Key' => $filepath
]);
$presignedrequest = $s3->createPresignedRequest($s3getobject, '+5 minutes');
$s3url = (string) $presignedrequest->getUri();
$headers = get_headers($s3url, true);
于 2015-10-21T12:45:51.573 に答える