Генерация галереи изображений из папки на FTP
Добавлено: Вт мар 27, 2018 8:31 pm
Здравствуйте! Возникла необходимость в генерации превьюшек фото с моей локальной папки на сетевом диске. На диске поднят FTP. В папку попадают фото. Нашел код как можно генерировать превьюшки из указанной папки. Генерация работает, фотки сканируются, выводятся на страничку. Превьюшки являются ссылками на файл источник. Все какбы классно, НО! превьюшки не отображают картинки. По нажатию на них открывается полноразмерная картинка, тут все нормально. Но вот смасштабированные картинки не подгружаются, хотя адреса ведут правильно к источникам.
Первый вариант скрипта:
Второй вариант уже конкретно с подключением к FTP. Если в пером случае нужен анонимный доступ, то тут уже можно задать логин и пароль.
Фотографии складируются программой по странному пути, но одной из папок вложения является дата загрузки фото. Т.к. фото туда попадают каждый день, то скрипт выводит фотки именно за сегодняшний день.
Исходники скриптов не мои, но мною модифицированы.
Так вот и вариант с подключением по FTP выдает тот же результат.

Думал что проблема в том что превьюшки маленькие и из-за масштабирования не подгружаются, но даже полноразмерные (там у меня 704px по ширине и вес 80-100 КБ каждая) не отображаются на этой сгенерированной страничке. Что-то подсказывает что проблема может в самом FTP. но там количество максимальных подключений на одного юзера я сделал 50. Может мало?
Может кто подскажет что я не учел?
Почему ссылки ведут на файл, а он не отображается?
Что может мешать?
Первый вариант скрипта:
СпойлерПоказать
Код: Выделить всё
$date_mas = getdate();
$d = $date_mas['mday'];
if ($d < 10) { $d = '0' . $d;}
$m = $date_mas['mon'];
if ($m < 10) { $m = '0' . $m;}
$y = $date_mas['year'];
$hrs = $date_mas['hours'];
if ($hrs < 10) { $hrs = '0' . $hrs;}
$min = $date_mas['minutes'];
if ($min < 10) { $min = '0' . $minh;}
$sec = $date_mas['seconds'];
if ($sec < 10) { $sec = '0' . $sec;}
$dir = 'ftp://192.168.1.150/192.168.1.151_0012152d8188/' . $y . '-' . $m . '-' . $d . '/01/pic/'; // Папка с изображениями
$cols = 7; // Количество столбцов в будущей таблице с картинками
$files = scandir($dir); // Берём всё содержимое директории
echo "<table>"; // Начинаем таблицу
$k = 0; // Вспомогательный счётчик для перехода на новые строки
for ($i = 0; $i < count($files); $i++) { // Перебираем все файлы
if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
echo "<td>"; // Начинаем столбец
$path = $dir.$files[$i]; // Получаем путь к картинке
echo "<a href='$path'>"; // Делаем ссылку на картинку
echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки
echo "</a>"; // Закрываем ссылку
echo "</td>"; // Закрываем столбец
/* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>";
$k++; // Увеличиваем вспомогательный счётчик
}
}
echo "</table>"; // Закрываем таблицу
СпойлерПоказать
Код: Выделить всё
$date_mas = getdate();
$d = $date_mas['mday'];
if ($d < 10) { $d = '0' . $d;}
$m = $date_mas['mon'];
if ($m < 10) { $m = '0' . $m;}
$y = $date_mas['year'];
$hrs = $date_mas['hours'];
if ($hrs < 10) { $hrs = '0' . $hrs;}
$min = $date_mas['minutes'];
if ($min < 10) { $min = '0' . $minh;}
$sec = $date_mas['seconds'];
if ($sec < 10) { $sec = '0' . $sec;}
$ftp_server = "192.168.1.150";
$ftp_user = "admin";
$ftp_pass = "pass";
$ftp_imageDir = '192.168.1.151_0012152d8188/' . $y . '-' . $m . '-' . $d . '/01/pic/';
$ftp = ftp_connect($ftp_server, "21", "30"); // Создаём идентификатор соединения (адрес хоста, порт, таймаут)
$login = ftp_login($ftp, $ftp_user, $ftp_pass); // Авторизуемся на FTP-сервере
if (!$login) exit("Ошибка подключения");
ftp_chdir($ftp, $ftp_imageDir); // Заходим в созданную директорию
$cols = 7; // Количество столбцов в будущей таблице с картинками
echo "<table>"; // Начинаем таблицу
$k = 0; // Вспомогательный счётчик для перехода на новые строки
$files = ftp_nlist($ftp, "."); // Получаем список файлов из текущей директории
for ($i = 0; $i < count($files); $i++) {
if (($files[$i] != ".") && ($files[$i] != "..")) { // Текущий каталог и родительский пропускаем
if ($k % $cols == 0) echo "<tr>"; // Добавляем новую строку
echo "<td>"; // Начинаем столбец
$path = 'ftp://'.$ftp_server.'/'.$ftp_imageDir.'/'.$dir.$files[$i]; // Получаем путь к картинке
echo "<a target='_blank' href='$path'>"; // Делаем ссылку на картинку
echo "<img src='$path' alt='' width='100' />"; // Вывод превью картинки
echo "</a>"; // Закрываем ссылку
echo "</td>"; // Закрываем столбец
/* Закрываем строку, если необходимое количество было выведено, либо данная итерация последняя */
if ((($k + 1) % $cols == 0) || (($i + 1) == count($files))) echo "</tr>";
$k++; // Увеличиваем вспомогательный счётчик
}
}
echo "</table>"; // Закрываем таблицу
ftp_close($ftp);
Исходники скриптов не мои, но мною модифицированы.
Так вот и вариант с подключением по FTP выдает тот же результат.

Думал что проблема в том что превьюшки маленькие и из-за масштабирования не подгружаются, но даже полноразмерные (там у меня 704px по ширине и вес 80-100 КБ каждая) не отображаются на этой сгенерированной страничке. Что-то подсказывает что проблема может в самом FTP. но там количество максимальных подключений на одного юзера я сделал 50. Может мало?
Может кто подскажет что я не учел?
Почему ссылки ведут на файл, а он не отображается?
Что может мешать?