|
|
|
| Здравствуйте, возможна ли корректная работа FTPManager-а при именах состоящих из 2 и более слов ? Я пробовал исправить эту проблему сам, отдельно от остальных переменных расчленял $file до первого пробела, имена строятся корректно, но теперь не строятся ссылки. Не могли бы вы посоветовать что-нибудь в решении этой проблемы?
Может можно как то по-простому расчленять $file_list чтобы сохранять пробелы?
Я пробовал брать $file отдельно, вырезал из него все до даты, которая в формате:
"MMM DD HH:MM/YYYY" - тоесть либо 12 либо 11 символов.
Далее срезал первые 11 символов и получал строку вида:
" filename" либо "M filename" . Отсюда оставлял только filename, После чего имена начали отображаться корректно, однако накрылись ссылки на скачку файла и смену директории.
Поможете? :-) | |
|
|
|
|
|
|
|
для: Agamidov
(26.03.2008 в 21:18)
| | Все же сделал поддержку таких имен.
Это - index.php
<?php
$title = "FTP";
// Устанавливаем соединение с FTP-сервером
require_once("config.php");
// Выводим "шапку" страницы
require_once("topftp.php");
// Определяем тип операционной системы сервера
// предоставляющего услуги FTP
$type = ftp_systype($link);
// Если операционная система отличается от UNIX
// прекращаем дальнейшую работу
if($type != "UNIX") puterror("К сожалению, на
удалённом сервере операционная система не
совеместимая с UNIX");
// Извлекаем из строки запроса значение директории
if(isset($_GET['dir']) && $_GET['dir'] != "%") $dir = $_GET['dir'];
else $dir = "/";
$dir = str_replace("%", "/", $dir);
// Получаем все файлы корневого каталога
// Дескриптор соединения $link получен в config.php
$file_list = ftp_rawlist($link,$dir);
// Закрываем соединение с FTP-сервером
ftp_close($link);
// Выводим текущую директорию
$directory=$dir;
$dir=str_replace(' ', '%20', $dir);
echo "<p class=help>Текущая папка - ftp://".$ftp_server.$directory."</p>";
// Если текущий каталог не является кореневым,
// выводим ссылку на один уровень вверх
if($dir != "/")
{
// Удаяем из переменной $dir последюю директорию
$pos = strrpos($dir, '/');
if($pos>0) $dirup = substr($dir, 0, $pos);
else $dirup = "/";
echo "<p style='margin: 0px; margin-bottom: 5px'><a href=index.php?dir=".str_replace('/', '%', $dirup).">вверх</a></p>";
}
// Выводим содержимое каталога
// Формируем таблицу
echo "<table class=bodytable width=100% border=1 cellpadding=4 cellspacing=0 bordercolordark=white bordercolorlight=gray>
<tr>
<td class=headtable align=center>права доступа</td>
<td class=headtable align=center>блоки</td>
<td class=headtable align=center>группа</td>
<td class=headtable align=center>пользователь</td>
<td class=headtable align=center>размер, байты</td>
<td class=headtable align=center>время создания</td>
<td class=headtable> </td>
<td class=headtable align=center colspan=2>действия</td>
</tr>";
foreach($file_list as $file)
{
// Разбиваем строку по пробельным символам
list($acc,
$bloks,
$group,
$user,
$size,
$month,
$day,
$year,
) = preg_split("/[\s,]+/", $file);
$mon=array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
for($i=0;$i<=11;$i++)
{
if(!strstr($file,$mon[$i])==false)
{
$file=strstr($file,$mon[$i]);
}
}
$file=substr($file,12,strlen($file));
//Если остался пробел в начале - удаляем его
if(substr($file, 0, 1) == ' '){$file=substr($file,1,strlen($file)); }
//меняем пробелы на "%20" для корректной работы ссылок
$file=str_replace(' ', '%20', $file);
// Если файл начинается с точки - игнорируем его
if(substr($file, 0, 1) == '.') continue;
// Формируем ссылку на удаление файла
$delete = "-";
$edit = "-";
//буферная переменная для корректного отображения файлов в списке
$buf=str_replace('%20',' ', $file);
// Для формирования корректных ссылок в таблице
// файлов перменной $dir добавляем /
if($dir != "/") $url = str_replace('/', '%25', $dir.'/'.$file);
else $url = str_replace('/', '%25', $dir.$file);
// Определяем является ли объект директорией
if(substr($acc, 0, 1) == 'd')
{
$file = "<b><a href=index.php?dir=$url title='Открыть директорию'>$buf</a></b>";
$delete = "<p><a href=rmdir.php?dir=$url>Удалить</a></p>";
$edit = "<p><a href=chdirform.php?dir=$url&acc=$acc>Исправить</a></p>";
$size = "<DIR>";
}
// Определяем является ли объект файлом
if(substr($acc, 0, 1) == '-')
{
$file = "<a href=download.php?dir=$url title='Загрузить файл'>$buf</a>";
$delete = "<p><a href=rmfile.php?dir=$url>Удалить</a></p>";
$edit = "<p><a href=editfileform.php?dir=$url&acc=$acc>Исправить</a></p>";
}
// Формируем строку таблицы
echo "<tr>
<td align=center><p><code>$acc</code></p></td>
<td align=center><p><code>$bloks</code></p></td>
<td align=center><p><code>$group</code></p></td>
<td align=center><p><code>$user</code></p></td>
<td align=center><p><code>$size</code></p></td>
<td align=center><p><code>$day $month $year</code></p></td>
<td align=right><p><code>$file</code></p></td>
<td align=center>$delete</td>
<td align=center>$edit</td>
</tr>";
}
echo "</table>";
// Ссылка на создание каталога
echo "<br><p style='margin: 0px; margin-bottom: 5px'><a href=mkdirform.php?dir=".str_replace('/', '%25', $dir).">Создать каталог</a> ";
echo "<a href=uploadform.php?dir=".str_replace('/', '%25', $dir).">Загрузить файл</a></p>";
// Выводим завершение страницы
require_once("bottomftp.php");
?>
|
Возник вопрос, можно ли сделать закачку "на лету"? | |
|
|
|
|