Как отобразить изображения в браузере, используя PHP и файлы из папки?

Как можно организовать папку с изображениями в корне вашего сайта так, чтобы изображения из нее отображались в окне браузера?
  • 2 июля 2024 г. 3:02
Ответы на вопрос 3
Для того чтобы отобразить изображения с помощью PHP, вам нужно создать файл PHP, который будет сканировать папку с изображениями и выводить их на страницу. 

Пример кода для такого файла PHP:

```php
<?php
$dir = "images/"; // путь к папке с изображениями
$files = scandir($dir); // сканируем папку

foreach($files as $file) {
    if(pathinfo($file, PATHINFO_EXTENSION) == "jpg" || pathinfo($file, PATHINFO_EXTENSION) == "png") {
        echo "<img src='$dir/$file' />";
    }
}
?>
```

Создайте папку "images" в корне вашего сайта и поместите в нее изображения. Затем создайте файл PHP с вышеприведенным кодом и разместите его также в корне сайта.

Для того чтобы организовать папку с изображениями так, чтобы они отображались в браузере, убедитесь что путь к папке правильно указан в вашем коде, а также что файлы изображений имеют правильные расширения (например, .jpg или .png).

После этого откройте страницу со своим файлом PHP в браузере и изображения из папки "images" должны быть отображены на странице.
Не понятно причем тут php, но у apache есть режим отображения содержимого каталога как html, в виде списка файлов в табличном виде (имя, размер, дата модификации...), и имя файла будет ссылкой на этот файл, если кликнуть на файлы изображений или любых других файлов, типы которых зарегистрированы в браузере - они будут отображены внутри, иначе будет диалог загрузки файла. <br/> <pre><code>&lt;Directory /var/www/html&gt;
        Options +Indexes
        AllowOverride None
        Require all granted
    &lt;/Directory&gt;</code></pre> <br/> тут +Indexes делает именно это - генерацию html <br/> <br/> p.s. если же нужно на php генерировать список файлов по своей логике то добавляешь поддержку php в apache (модуль mod_php или php-fpm) и index.php: <br/> <pre><code class="php">foreach (scandir('.') as $file)
{
    if ($file == '.' || $file == '..') continue;
    echo '&lt;a href="' . htmlspecialchars($file) . '"&gt;' . htmlspecialchars($file) . '&lt;/a&gt; - ' . filesize($file) . '&lt;br&gt;';
}</code></pre>
<blockquote>Я хочу вынести ее из публичной папки.</blockquote> Зачем? Есть какая-то особенная необходимость? По логике все файлы сайта должны находиться в одной папке проекта, а файлы видимые из веба в публичной папке проекта. В некоторых случаях, например когда эти файлы не должны отдаваться без какого-то уровня доступа, их выносят выше публичной папки, таким образом закрывая от прямого доступа из веб. Далее доступ осуществляется через пхп, конкретная реализация сильно зависит от задач и имеющегося кода/фреймворка. Простейший вариант - имя файла читается как параметр из урл, далее делается readfile() из этой папки с файлами, предварительно отдаются заголовки, указывающие что это файл изображения. Хотя без понимания "зачем" реализация "как" это тыканье пальцем в небо. Может вам симлинк тупо подойдет... <br/> <br/> <blockquote>В идеале - в любое место на диске, которое захочу.</blockquote> Так делать не нужно. Это во первых нарушает безопасность, так как вы даете права на чтение из веба в папку, которая не должна быть доступной левым пользователям, во вторых распыляет проект по машине, что тоже не есть хорошо как минимум в плане организации.
Похожие вопросы