Используйте предварительно подписанный URL-адрес для получения объектов

Я пытаюсь получить объекты в AWS S3 с помощью listObjects, но мне нужно сделать это с предварительно подписанным URL-адресом. Следующий код дает мне объекты:

$objects = $s3Client->listObjects([
   'Bucket' => $bucket,
   'Prefix' => $prefix
]);

Проблема в том, что мне нужно сделать это с заранее заданным URL-адресом. Я получаю URL-адрес со следующим:

$cmd = $s3Client->getCommand('ListObjects', [
    'Bucket' => $bucket,
    'Prefix' => $prefix
]);
$request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
$url = (string)$request->getUri();

И я получаю объекты при доступе к URL-адресу через браузер, но мне нужно получать объекты в PHP вместо ссылки на них. Как мне это сделать?

Загрузите URL-адрес так же, как и любой другой, например file_get_contents или curl.

deceze 20.12.2018 13:41

Как это правильно, если я могу получить объекты с помощью $ s3Client-> execute ($ cmd)? Нет ли подобного выполнения ($ request)?

Nicklas Mandrup Frederiksen 20.12.2018 14:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
135
1

Ответы 1

$s3Client = Aws::createClient('s3');
$result = $s3Client->getObject(array(
   'Bucket' => $bucket,
   'Key'    => $path
));
$metadata = $result->get("@metadata");
$statusCode = $metadata["statusCode"];
if ($statusCode == 200) {
    header("Content-type: text/image");
    header("Content-Disposition: attachment; filename = ".$path);
    header("Pragma: no-cache");
    header("Expires: 0");
    return $result['Body'];//echo $result['Body'];
}

Другие вопросы по теме