<?
//связь с фтп
$ftp_server = "192.168.0.222";
$ftp_port = 21;
$connect = ftp_connect($ftp_server, $ftp_port) or die("Невозможно связаться с FTP сервером, попробуйте позже");
$user = "admin";
$password = "";
ftp_login($connect, $user, $password);
if(!empty($_POST['folder']))
{
foreach($_POST['folder'] as $val)
{
echo $val .'<br />';
}
ftp_chdir($connect, $val);
}
$file_list = ftp_nlist($connect, ".");
$media_increment = 0;
$folders_increment = 0;
$i = 0;
//если в папке есть файлы то перечислить их
if(is_array($file_list))
{
foreach($file_list as $file)
{
$outputfile = iconv("UTF-8", "CP1251//IGNORE", $file);
$outputfile = substr($outputfile, 2);
if(!(@ftp_chdir($connect, $outputfile)))
{
$media_filelist[$media_increment] = $outputfile;
$media_increment++;
}
else
{
$folder_list[$folders_increment] = $outputfile;
$folders_increment++;
ftp_chdir($connect, "..");
}
}
if(!empty($folder_list))
{
foreach($folder_list as $file)
{
echo '<form style="paddin:0;margin:0;" action="'. $_SERVER['PHP_SELF'] .'" method="post">';
echo '<input type="hidden" name="folder[]" value="'. $file .'" />';
echo '<input type="IMAGE" SRC="folder.jpeg" VALUE="кнопко" />'. $file;
echo '</form>';
}
}
echo '<form style="paddin:0;margin:0;" action="test2.php" method="post">';
if(!empty($media_filelist))
foreach($media_filelist as $file)
{
echo '<input type=checkbox name="film[]" value="'.$file.'"> '.$file.'<br>';
}
echo '<br><input type="submit" value="ссылки" />';
}
?>
дело в том, что когда переходишь в подкаталог, то отображается содержимое файлы с чекбоксами и папки, так вот если перейти ещё глубще к папке, к примеру ggg, то возникает ошибка Warning: ftp_chdir(): CWD failed. "/ggg": directory not found. in C:\work\site.by\www\test.php on line 17 т.е нарисовался "/" откуда он помогите разобраться.
Спустя 7 часов, 43 минуты, 30 секунд (19.05.2011 - 08:25) linker написал(а):
Всё правильно, чтобы переходить глубже нужно таскать с собой каждый раз весь путь целиком, т.е. для каждого каталога нужно иметь при себе путь к его родительскому каталогу. Например, есть папки
/tmp-+Чтобы добраться до subtest2, нужно помнить что он находится по пути /tmp/test2.
|
+ test
|
+ test2 +
|
+ subtest2
$ParentFolder = '/tmp/test2';Надеюсь понятно.
$NeedFolder = 'subtest2';
ftp_chdir($connect, $ParentFolder . '/' . $NeedFolder);
Спустя 3 часа, 53 минуты, 7 секунд (19.05.2011 - 12:18) svolota написал(а):
есть папки
home/lvl1/lvl2/lvl3/the end.txt
попробовал вот как:
отобразилось "the end.txt", т.е чтобы перейти в подкаталог из текщей папки с помощью ftp_chdir не обязательно весь путь писать так?
home/lvl1/lvl2/lvl3/the end.txt
попробовал вот как:
<?php
$ftp_server = "192.168.0.222";
$ftp_port = 21;
$connect = ftp_connect($ftp_server, $ftp_port) or die("Невозможно связаться с FTP сервером, попробуйте позже");
$user = "admin";
$password = "";
ftp_login($connect, $user, $password);
ftp_chdir($connect, "lvl1");
ftp_chdir($connect, "lvl2");
ftp_chdir($connect, "lvl3");
$file_list = ftp_nlist($connect, ".");
foreach($file_list as $file)
{echo $file.'<br>';}
//ftp_chdir($connect, "")
?>
отобразилось "the end.txt", т.е чтобы перейти в подкаталог из текщей папки с помощью ftp_chdir не обязательно весь путь писать так?
Спустя 1 час, 1 минута, 27 секунд (19.05.2011 - 13:20) linker написал(а):
Ну посмотри на мой пример и всё поймёшь.
ftp_chdir($connect, 'home/lvl1/lvl2/lvl3');
Спустя 20 минут, 56 секунд (19.05.2011 - 13:41) svolota написал(а):
это из home в lvl3 сразу, а если я к примеру в lvl2 и мне в lvl3 надо?
если строку пишу ftp_chdir($connect, 'home/lvl1/lvl2/lvl3') находясь в lvl2 пишет Warning: ftp_chdir(): CWD failed. "/lvl1/lvl2/lvl1/lvl2/lvl3": directory not found
или смысл в том, чтобы каждый раз возвращаться к home? и по другому никак.
если строку пишу ftp_chdir($connect, 'home/lvl1/lvl2/lvl3') находясь в lvl2 пишет Warning: ftp_chdir(): CWD failed. "/lvl1/lvl2/lvl1/lvl2/lvl3": directory not found
или смысл в том, чтобы каждый раз возвращаться к home? и по другому никак.
Спустя 39 минут, 15 секунд (19.05.2011 - 14:20) linker написал(а):
А в какой момент ты находишься в lvl2? Скрипт отработал, коннект к фтп закрылся и всё, в следующий раз ты опять начинаешь из home.
Спустя 1 минута, 41 секунда (19.05.2011 - 14:22) svolota написал(а):
Цитата (linker @ 19.05.2011 - 11:20) |
А в какой момент ты находишься в lvl2? Скрипт отработал, коннект к фтп закрылся и всё, в следующий раз ты опять начинаешь из home. |
точно я ж всё время в home сижу
Спустя 1 час, 15 минут, 30 секунд (19.05.2011 - 15:37) svolota написал(а):
Спс большое линкер!
вот что получилось, работает =) 1 строчку дописать нужно было около хайд формы
вот что получилось, работает =) 1 строчку дописать нужно было около хайд формы
<?
//связь с фтп
$ftp_server = "192.168.0.222";
$ftp_port = 21;
$connect = ftp_connect($ftp_server, $ftp_port) or die("Невозможно связаться с FTP сервером, попробуйте позже");
$user = "admin";
$password = "";
ftp_login($connect, $user, $password);
if(!empty($_POST['folder']))
{
foreach($_POST['folder'] as $val)
{
ftp_chdir($connect, $val);
}
}
$file_list = ftp_nlist($connect, ".");
$media_increment = 0;
//использется в записи массива медиа файлов
$folders_increment = 0;
//используется в записи массива папок
$i = 0;
//если в папке есть файлы то перечислить их
if(is_array($file_list))
{
foreach($file_list as $file)
{
$outputfile = iconv("UTF-8", "CP1251//IGNORE", $file);
// перевод из юникода в вин 1251
$outputfile = substr($outputfile, 2);
//удаляет из названия файла "./"
//если файл - не папка то записать в медиа_массив
if(!(@ftp_chdir($connect, $outputfile)))
{
$media_filelist[$media_increment] = $outputfile;
$media_increment++;
}
else
{
$folder_list[$folders_increment] = $outputfile;
$folders_increment++;
//echo "<INPUT TYPE=IMAGE SRC=\"folder.jpeg\" VALUE=\"$outputfile\">$outputfile<br>";
ftp_chdir($connect, "..");
}
}
if(!empty($folder_list))
{
foreach($folder_list as $file)
{
echo '<form style="paddin:0;margin:0;" action="'. $_SERVER['PHP_SELF'] .'" method="post">';
$path = ftp_pwd($connect) .'/'. $file;
echo '<input type="hidden" name="folder[]" value="'. $path .'" />';
echo '<input type="IMAGE" SRC="folder.jpeg" VALUE="кнопко" />'. $file;
echo '</form>';
}
}
echo '<form style="paddin:0;margin:0;" action="test2.php" method="post">';
if(!empty($media_filelist))
foreach($media_filelist as $file)
{
echo "<input type=checkbox name=\"film[]\" value=\"$file\"> $file<br>";
}
echo "<br><input type=\"submit\" value=\"Получить ссылку на скачивание\" />";
}
?>