getObject в AWS S3 возвращает потоковый объект, который может быть визуализирован двумя способами.
- Как указано в документации aws S3 , вы можете отправить ответ прямо в браузер, установив заголовок и распечатав тело ответа
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1'
]);
try {
// Get the object.
$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname
]);
// Display the object in the browser.
header("Content-Type: {$result['ContentType']}");
echo $result['Body'];
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
- Вы можете использовать функцию getUri (), которая также будет возвращать Object, для этого вы можете использовать __toString ()
// В моем случае мне нужно создать предварительно заданный запрос, так как я включил
Шифрование
$command = $s3Client->getCommand('GetObject', [
'Bucket' => $bucket_name,
'Key' => $file_name
]);
$result = $s3Client->createPresignedRequest($command, '+10 minutes');
$presignedUrl = $result->getUri()->__toString();
// Решение для получения URI без прохождения предварительно заданного запроса
$result = $s3Client->getObject([
'Bucket' => $bucket_name,
'Key' => $file_name
]);
$fileUrl = $result->getUri()->__toString();