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






$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'];
}
Загрузите URL-адрес так же, как и любой другой, например
file_get_contentsили curl.