Динамическая галерея изображений PHP - Извлечение изображений S3Bucket в виде массива - без отображения изображений - PullRequest
0 голосов
/ 07 декабря 2018

Я загружаю изображения динамически из S3 Bucket на основе имени файла и пытаюсь отобразить их на веб-странице.Код полностью заполняет массив URL.Тем не менее, когда я создаю HTML в php, предоставив img src в качестве URL с помощью функции foreach, изображения не отображаются.

Ниже приведен код:

$objects = json_decode(exec($pyexec) , true);
//echo gettype($objects);


foreach ($objects as $object) {
  $num = $s3->getObjectUrl(BUCKET, $object);
  //echo $num;
  $imgname = basename($num);

   echo '<div class="col-xs-6 col-sm-2 ">';
    echo '<img src="'.$num.'" id="thumbNails'.$imgname.'" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div>';
}

В этомgettype($objects) печатает, что это массив.Когда я использую print_r($objects), он печатает следующее:

Array
(
    [0] => 1205944447_1544090338.044875.jpg
    [1] => 1205944447_1544090338.456757.jpg
    [2] => 1205944447_1544090338.870485.jpg
    [3] => 1205944447_1544090340.111561.jpg
)

Изнутри foreach, когда я отображаю URL, я получаю следующее:

https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.044875.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.456757.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.870485.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090340.111561.jpg

Вместо заполнения функции foreach навеб-страница, когда я запускаю ее из консоли, я получаю следующий вывод:

<div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.044875.jpg" id="thumbNails1205944447_1544090338.044875.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.456757.jpg" id="thumbNails1205944447_1544090338.456757.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.870485.jpg" id="thumbNails1205944447_1544090338.870485.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090340.111561.jpg" id="thumbNails1205944447_1544090340.111561.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div>

Для меня все они выглядят нормально.Не уверен, почему именно изображения нельзя было увидеть на веб-странице.Я проверил разрешение S3 Bucket - у них открыт общий доступ как для корзины, так и для изображений в корзине.Однако, когда я пытаюсь заполнить изображения из локального каталога, подобный код выполняется без проблем.Как я могу отобразить изображения из корзины S3 и мой URL-адрес правильный?

Редактировать: я использую python для запроса таблицы DynamodB, чтобы получить имена изображений, а затем пытаюсь получить URL-адреса изображений на основена изображении и названии ведра.Когда я просто сбрасываю print_r($objects), ошибок нет.Однако, когда я использую PHP для создания галереи, я получаю следующую ошибку boto3 & php.

Traceback (most recent call last):
  File "filterImages.py", line 2, in <module>
    import boto3
  File "/usr/local/lib/python2.7/dist-packages/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/usr/local/lib/python2.7/dist-packages/boto3/session.py", line 17, in <module>
    import botocore.session
ImportError: No module named botocore.session
[Fri Dec 07 11:00:51.507209 2018] [:error] [pid 6767] [client ::1:64844] PHP Warning:  Invalid argument supplied for foreach() in /var/www/html/getImages.php on line 48, referer: http://localhost/images.php
...