невозможно отобразить объект AWS S3, но загружает - PullRequest
0 голосов
/ 08 октября 2018

Новичок PHP / AWS S3 здесь: я работаю над проектом, в котором мне нужно иметь возможность отображать обложки альбомов из корзины AWS S3, а также воспроизводить музыкальный файл.Я могу загрузить, но при попытке просмотра изображения, он загружает вместо этого.Проверили тип контента и расположение контента.Я считаю, что проблема заключается в этом фрагменте кода: я был бы признателен за любую помощь / предложения.

<?php
....
....
try {
$s3 = S3Client::factory(
  array(
    'credentials' => array(
      'key' => $IAM_KEY,
      'secret' => $IAM_SECRET
    ),
    'version' => 'latest',
    'region'  => 'us-east-2'
  )
);
//
$result = $s3->getObject(array(
  'Bucket' => $BUCKET_NAME,
  'Key'    => $keyPath
));
echo $result;
//exit();
// Display it in the browser
header("Content-Type: {$result['ContentType']}");
header('Content-Disposition: filename="' . basename($keyPath) . '"');
return $result['Body'];
} catch (Exception $e) {
   die("Error: " . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
  <head>
    <title>display image</title>
 </head>
 <body>
   <img src="<?php echo $result['body']; ?>">
 </body>
</html>

1 Ответ

0 голосов
/ 08 октября 2018

Цитировано / украдено у этот ответ :

Вы можете загрузить содержимое из S3 (в сценарии PHP), а затем обработать его, используя правильные заголовки.

В качестве грубого примера, скажем, у вас было следующее в image.php:

$s3 = new AmazonS3();
$response = $s3->get_object($bucket, $image_name);
if (!$response->isOK()) {
    throw new Exception('Error downloading file from S3');
}
header("Content-Type: image/jpeg");
header("Content-Length: " . strlen($response->body));
die($response->body);
Then in your HTML code, you can do

<img src="image.php">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...