Я хочу получить закодированную в base64 строку объекта S3 непосредственно из клиента S3, а не преобразовывать URL-адрес S3 в base64 вручную.
Я попытался выполнить поиск по inte rnet, но не смог найти решение проблемы.
Вот мой минимальный код
Шаг 1: Получить URL-адрес S3 для объекта S3
$params = [
'Bucket' => $bucket,
'Key' => $key,
];
$cmd = $this->s3_client->getCommand('GetObject', $params);
$request = $this->s3_client->createPresignedRequest($cmd, $expiration);
$s3Url = (string) $request->getUri(); // S3 URL
Шаг 2. Преобразование URL-адреса S3 в закодированную строку base64
try {
$type = @explode('?', pathinfo($s3Url, PATHINFO_EXTENSION))[0];
$data = file_get_contents($s3Url);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
} catch (Exception $ex) {
$base64 = "";
}
Я хочу получить строку base 64 только из шага 1, выделив шаг 2. Будем благодарны за любые предложения / исправления.
API getobject ref: https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject
Спасибо!