amazon s3 — получение заголовков для потокового объекта с помощью AWS SDK для PHP (v3)

руководство существует для v2 из AWS SDK для PHP для потоковой передачи объектов, таких как изображения, из S3. В этом руководстве он ссылается $command->getResponse()->getHeaders() — и то и другое getResponse() а также getHeaders() кажется, не существует в v3 SDK.

документация для обёртки потока в v3 не ссылается на получение заголовков. Я пробовал родной PHP get_headers() с s3:// путь, но это возвращает false (без ошибок). Если я попробую get_headers($fullurl)Я могу получить заголовки.

Как я могу получить заголовки для объекта, используя потоковый путь s3:// для версии 3 AWS SDK для PHP? Использование полного 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

0

Решение

Одно решение не кажется самым эффективным способом, но оно работает — оно работает на том факте, что 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);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]