Получить список всех файлов изображений в каталоге - PullRequest
0 голосов
/ 06 марта 2012

Я пытаюсь сгенерировать HTML-код для отображения списка изображений для слайд-шоу.

Я пришел к следующей мысли:

function galGetTopPhotos()
{
    //path to directory to scan
    $directory = SITE_ROOT_PATH."/gallery/best/";

    //get all files
    $images = glob($directory . "*.*");

    //print each file name
    $ret = "";
    $ret .= '<div id="myslides">';        

    foreach($images as $image)
    {
        $ret .= '<img src="'.$image.'" />';
    }

    $ret .= '</div>';

    return $ret;
}

Проблема в том, что он работает только тогда, когда я использую корневой путь для $directory ... если я использую URL, он не будет работать. И это заставляет изображения не загружаться. Вот что генерирует этот код:

<div id="myslides">
<img src="D:/xampp/htdocs/mrasti/gallery/best/1.jpg" />
<img src="D:/xampp/htdocs/mrasti/gallery/best/10.jpg" />
</div>

Итак, вопрос в том, как получить список файлов, чтобы он генерировал источники img в формате http://127.0.0.1/....?

Что я имею в виду, если я использую такой код, он не возвращает файла!

$directory ="http://127.0.0.1/mrasti/gallery/best/";

Ответы [ 3 ]

4 голосов
/ 06 марта 2012

Это похоже на работу для функции PHP basename. Это берет путь к файлу и возвращает только последний элемент пути - в этом случае фактическое имя изображения JPEG.

Вы можете изменить свой код так, чтобы он выглядел примерно так:

$urlPath = "http://127.0.0.1/mrasti/gallery/best/";

...
...

foreach($images as $image)
{
    $relative_path = $urlPath.basename($image);
    $ret .= '<img src="'.$relative_path.'" />';
}

Вышеприведенный берет путь и добавляет имя файла "example.jpg" в ваш каталог изображений url

2 голосов
/ 06 марта 2012

glob работает только для локальных файлов, а не для удаленных файлов.Посмотрите здесь:

http://php.net/manual/en/function.glob.php

Для удаленных файлов посмотрите здесь:

http://www.php.net/manual/en/features.remote-files.php

Но я не думаю, что вынужны удаленные файлы.Похоже, вы хотите пройти через локальный каталог и отобразить эти изображения.

Попробуйте что-то вроде этого

...
$ret .= '<img src="http://127.0.0.1/my/path/'.basename($image).'" />';
...
1 голос
/ 06 марта 2012

У вас должна быть некоторая функциональность, чтобы преобразовать путь к файлу на диске в правильный URI, чтобы ваш браузер мог его понять.

В вашем конкретном случае, как указано и с точными данными, приведенными в вашем вопросе, может сработать следующее:

foreach($images as $image)
{
    $src = '/mrasti/gallery/best/'.substr($image, strlen($directory));
    $ret .= '<img src="'.$src.'" />';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...