Две записи в пустом каталоге FTP - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать список всех имен файлов, найденных в папке на FTP-сервере.Полный каталог сохраняется в таблице базы данных настроек вместе с учетными данными для входа.Он хорошо подключается к FTP-области, и я могу загружать и скачивать файлы с него.

Это мой код для получения файлов из папки.

lstFiles = new List<string>();

string remoteFTPPath = ftpLocation;
var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath);

request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
request.Proxy = null;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

List<string> directories = new List<string>();

string line = reader.ReadLine();

while (!string.IsNullOrEmpty(line))
{
   directories.Add(line);
   line = reader.ReadLine();
}
reader.Close();

У меня проблема в том, что в данный момент папка, которую я пытаюсь найти, пуста, но онанайти 2 файла.

Почему это?

Значение в remoteFTPPath равно ftp://ftp.myArea.co.uk/myServer.co.uk/System-Files/

Это папка, когда я открываю ее в FileZilla - это определенно пустая папка.

enter image description here

Как мне просто просмотреть все файлы в System-Files и поместить их в список?

Журнал FileZilla:

Статус:Зарегистрированный
Статус: получение списка каталогов "/myArea.co.uk"...
Статус: успешное отображение каталога" /myArea.co.uk "
Статус: получение списка каталогов" /myArea.co.uk/System-Files"...
Статус: список каталогов "/myArea.co.uk/System-Files" успешен

И при тестировании того же кода наприложение C #, файл Network.log выводит, как показано ниже.

Информация о System.Net: 0: [6132] FtpWebRequest # 60068066 ::. ctor ( ftp: //ftp.myServer.co.uk / myArea.co.uk / System-Files / )
Информация о System.Net: 0: [6132] Текущий тип установки ОС - «Клиент».
Информация о System.Net: 0: [6132] FtpWebRequest # 60068066 :: GetResponse (Method = LIST.)
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Создано подключение от xxx.xxx.x.xx: YYYY к xxx.xxx.xxx.x: YY.
Информация System.Net: 0: [6132] Связывание FtpWebRequest # 60068066 с FtpControlStream # 34640832
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Получен ответ [Готов к работе с 220-матричным FTP-сервером. * 1044)* 220-Это частная система - без анонимного входа
Подключения 220-IPv6 также приветствуются на этом сервере.
220 Обратите внимание: файлы для вашего сайта должны храниться в каталоге htdocs.]
СистемаИнформация .Net: 0: [6132] FtpControlStream # 34640832 - Команда отправки [USER myUser]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Полученный ответ [331 Пользователь myUser OK.Требуется пароль]
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Команда отправки [PASS ********]
Информация System.Net: 0: [6132] FtpControlStream # 34640832 -Получен ответ [230 ОК.Текущий каталог: /]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Отправка команды [OPTS utf8 on]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Полученный ответ [500Неизвестная команда]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Команда отправки [PWD]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Получен ответ [257 "/" isваше текущее местоположение]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Отправка команды [CWD /myArea.co.uk/System-Files]
Информация о System.Net: 0: [6132] FtpControlStream# 34640832 - Получен ответ [250 ОК.Текущий каталог - /myArea.co.uk/System-Files]
Информация о System.Net: 0: [6132] FtpControlStream # 34640832 - Команда отправки [TYPE I]
Информация о System.Net: 0: [6132]FtpControlStream # 34640832 - Полученный ответ [200 TYPE теперь является 8-разрядным двоичным файлом]
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Отправка команды [PASV]
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Полученный ответ [227 Вход в пассивный режим (213 171 193,5117,157)] *
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Команда отправки [LIST]
Информация System.Net: 0:[6132] FtpControlStream # 34640832 - Получен ответ [150 Принято соединение данных]
Информация System.Net: 0: [6132] FtpControlStream # 34640832 - Полученный ответ [226-ASCII
226-Опции: -a -l
226 всего совпадений]
Информация System.Net: 0: [6132] FtpWebRequest # 60068066: :( Освобождение FTP-соединения # 34640832.)
Информация System.Net: 0: [14644] ServicePoint # 33675143 - Закрыто как бездействующее.

1 Ответ

0 голосов
/ 21 сентября 2018

Многие FTP-серверы возвращают записи . и .. в списке каталогов, аналогично командам * nix ls -a или Windows dir.Это ссылки на сам каталог и родительский каталог, соответственно.

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

Если вы не хотите, вы должны отфильтровать их в своем коде.Что FileZilla делает тоже наверняка.

...