Варианты чтения удаленного каталога - PullRequest
2 голосов
/ 05 февраля 2011

У меня есть скрипт, который отображает изображения на основе определенных условий. Когда ни одно из условий не выполняется, я хочу случайным образом отобразить одно из стандартных (резервных) изображений. Эти другие изображения находятся на удаленном сервере. Я прочитал, что вы не можете прочитать каталог на удаленном сервере, что имеет смысл.

Мой лучший выбор - поместить файл в каталог изображений на удаленном сервере, который выводит все имена файлов изображений, чтобы я мог проанализировать его с другим сервером? Есть ли более простой способ?

Я предпочитаю не использовать FTP (http://php.net/manual/en/book.ftp.php).

Каковы мои варианты получения имен изображений в этой папке?

Спасибо, Ryan

UPDATE:

@ ответ Марио легкий и работает как шарм. Это именно то решение, которое я думал, что хотел, но подумав об этом еще и прочитав, что даже @mario сделает это по-другому, я решил пойти с ответом @ bensiu , потому что для меня контроль и контроль безопасность важнее, чем удобство. С помощью метода @ mario очень трудно понять, хороши ли данные, которые вы получаете, (отсутствие контроля), и вы раскрываете свой каталог / некоторую информацию о сервере (безопасность). Предложение @ bensiu включает в себя второй файл (неудобство), но обеспечивает контроль и безопасность, с которыми я, в конечном счете, решаю пойти!

Спасибо вам обоим!

-Ryan

Ответы [ 3 ]

2 голосов
/ 05 февраля 2011

Я бы предпочел точный и выделенный скрипт-обработчик, как указал @bensiu.

Но альтернативой было бы прочитать список каталогов.Простой сгенерированный Apache список mod_index будет достаточен для:

$html = file_get_contents("http://example.com/images/");
preg_match_all('/<a href="([-\w\d.]+\.(jpeg|png|gif))"/', $html, $uu);
$files = $uu[1];
1 голос
/ 05 февраля 2011

Надеюсь, у вас есть хотя бы доступ к удаленному серверу ...

Вы можете разместить там скрипт «A», который будет выполнять работу локально, возвращать список изображений в предпочитаемом формате (необработанный текст, JSON, XML ...), и этот скрипт будет вызываться удаленно с помощью curl с вашего сервера. ...

Также целесообразно убедиться, что при вызове сценария «А» вы, по крайней мере, передаете какой-то секретный ключ для предотвращения несанкционированного доступа (не идеальное решение, но его можно было бы получить)

0 голосов
/ 05 февраля 2011

Если на вашем сервере включен PHP5 и обертка потока HTTP, скопировать его в локальный файл очень просто и просто:

copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');

ome hosts отключите функцию copy (), тогда вы можете сделатьсвой -

<?php 
    function copyemz($file1,$file2){ 
          $contentx =@file_get_contents($file1); 
                   $openedfile = fopen($file2, "w"); 
                   fwrite($openedfile, $contentx); 
                   fclose($openedfile); 
                    if ($contentx === FALSE) { 
                    $status=false; 
                    }else $status=true; 

                    return $status; 
    } 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...