IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Req: Листинг файлов на компьютере в сети на PHP (http://www.imho.ws/showthread.php?t=83108)

LAndrew2 03.04.2005 20:53

Req: Листинг файлов на компьютере в сети на PHP
 
подскажите, плз, как сделать листинг всех файлов на каком-либо компе в локальной сети
(т.е. имеется комп с ip 192.168.156.47, на нем есть папка video; как сделать такой PHP скрипт, чтобы запустив его на своем компе, вывести на экран список всех файлов с того компа (ну или только файлов *.avi), включая и вложенные папки)

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

или, плз, дайте хоть какой-нибудь пример работы с файлом на удаленном компе (только \\192.168.156.47, а не http или фтп)

BorLase 03.04.2005 22:53

вот кусок реального скрипта с одной моей страницы - http://lbn.host.sk/www/soft

что он делает - начиная с заданного, рекурсивно обходит каталоги и выдает имя файла в виде ссылки и его размер (как я понимаю, практически то, что тебе надо).

по идее, должно работать и в случае list_dir("\\\\192.168.1.1\\Video", 0);

обрати внимание (напомню на всяк случай) - обратную косую надо удваивать.

Если все-таки не сработает (к сожалению, сети нет - проверить не могу) - тогда примапь сетевой ресурс как локальный диск - тогда уж точно должно отработать.

Надеюсь, тебе это поможет. Отпишись о результатах, если не затруднит.

Код:

<?php
        function mk_indent($indent) {
                for( $i=0; $i<$indent; $i++ )
                        echo "&nbsp;&nbsp;&nbsp;";
        }

        function list_dir($dir_name, $indent) {
                $handle=opendir($dir_name);
                while (false!==($file = readdir($handle))) {
                        if ($file != "." && $file != ".." && substr($file,-4,4) != ".php") {
                                if( is_dir($dir_name . "/" . $file) ) {
                                        mk_indent($indent);
                                        echo "<b><i>$file</i></b><br>\n";
                                        list_dir( $dir_name . "/" . $file, $indent+1 );
                                }
                                else {
                                        $fsz = filesize ($dir_name . "/" . $file);
                                        mk_indent($indent);
                                        echo "<a href='$dir_name/$file'>$file</a>" . " [ $fsz ]<br>\n";
                                }
                        }
                }
                closedir($handle);
        }

        list_dir(".", 0);
?>


LAndrew2 04.04.2005 00:45

работает!
но только в случае с \\\\192.168.1.1\\Video
а как же получить список всех расшаренных папок, чтобы потом уже по ним пройтись? просто \\\\192.168.1.1 не помогает :( - пишет:
Код:

Warning: opendir(\\192.168.1.1\): failed to open dir: Invalid argument in script.php on line NN
а насчет мэппинга сетевого диска - это явно не подходит, ибо будет списочек из 20-40 компов, которые скрипт будет последовательно обрабатывать...

BorLase 04.04.2005 01:26

а если так
list_dir("\\\\192.168.1.1", 0);

или так
list_dir("\\\\192.168.1.1\\.", 0);

LAndrew2 04.04.2005 01:28

пробовал и так, и всяк - не работает :(
зы. ось - WinXP

BorLase 04.04.2005 01:51

хреново

возможно, решение невозможно в принципе - ведь нельзя смонтировать "все шары" - можно только конкретный ресурс. т.е., похоже, винда говорит "это каталог" только для конкретной шары...


Часовой пояс GMT +4, время: 23:29.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.