Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/117: Рейтинг темы: голосов - 117, средняя оценка - 4.85
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Скачивание папки с FTP - сервера по актуальной дате

04.10.2018, 09:39. Показов 33393. Ответов 897
Метки ftp, tls (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно ли реализовать скачку с фтп папки в которой находятся файлы, папок много, а скачать файлы нужно из той папки, которая названа сегодняшней датой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2018, 09:39
Ответы с готовыми решениями:

Скачивание папки с FTP - сервера по актуальной дате (2)
Продолжение темы https://www.cyberforum.ru/csharp-net/thread2329455.html var mStr = "20181206_20-15-30.txt"; var dtAr =...

Скачивание папок с FTP-сервера
всем приветик ! подскажите плиииз ! есть батник он подключается к фтп и копирует оттуда файлы все ! open 89.253.247.10 metko ...

Скачивание файла с FTP-сервера
Здравствуйте. Подскажите как загрузить файл с сервера по ftp?

897
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 10:40  [ТС]
Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
bool CurDateFolderMayConnectt(DataTime CurrentDate)
{
try
{
var res = (FtpWebRequest)FtpWebRequest.Create(FolderAdress); 
            res.Credentials = new NetworkCredential("login", "pass"); 
            res.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
}
catch (WebException ex)
{
Console.WriteLine(ex);
}
return res;
Добавлено через 8 минут
Я только не понимаю, почему bool? Я прочитал литературу, но не могу понять.

Добавлено через 38 секунд
И не могу понять зачем true и folse здесь?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 10:50
еще раз
Цитата Сообщение от Damenikx Посмотреть сообщение
Console.WriteLine(ex);
здесь не нужно.
вы образуете метод с возвращаемым значением bool, но при этом возвращаете FtpWebRequest, это не правильно, код работать не будет! Правильнее будет думать в парадигме
C#
1
2
3
4
5
6
bool CurDateFolderMayConnectt(DataTime CurrentDate)
{
   var res = false;
   try{}catch (WebException ex){}
   return res;
}
для того что бы нам прочитать что же нам пишет исключение лучше переписать метод в парадигме
C#
1
2
3
4
5
6
7
8
9
10
11
12
bool CurDateFolderMayConnectt(DataTime CurrentDate, out string ExceptMS)
{
   ExceptMS = string.Empyty;
   var res = false;
   try
      {
        }catch (WebException ex) 
      {
          ExceptMS = string.Format("Сообщение об ошибке: {0}        StackTrace: {1}", ex.Message, ex.StackTrace);
      }
   return res;
}
теперь мы должны подумать о том, что же мы должны сделать в попытке try{} пока у вас ход мыслей правильный но не полный и в этой части.

Добавлено через 2 минуты
Цитата Сообщение от Damenikx Посмотреть сообщение
Я только не понимаю, почему bool? Я прочитал литературу, но не могу понять.
потому что так удобнее нам. Потом в логике просто проверили, что он равен true, и запустили дальнейшую работу. Если false, то выдали сообщение.
Цитата Сообщение от Damenikx Посмотреть сообщение
И не могу понять зачем true и folse здесь?
этим действием мы проверяем возможность подключения к нужной папке.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 10:58  [ТС]
В Try, я так понимаю, мы проверяем непосредственно подключение к фтп серверу и наличие папки на фтп за определённую дату.

Добавлено через 4 минуты
То есть мы должны для начала подключиться к фтп.

C#
1
2
3
var resFTP = (FtpWebRequest)FtpWebRequest.Create(FolderAdress); 
              res.Credentials = new NetworkCredential("login", "pass"); 
              res.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
Добавлено через 3 минуты
С помощью метода Ftp.ListDirectoryDetails мы получаем информацию о всех папках лежащих по адресу FolderAdress (который мы задали ранее), но не выводим его а просто получаем.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 11:03
Цитата Сообщение от Damenikx Посмотреть сообщение
В Try, я так понимаю, мы проверяем непосредственно подключение к фтп серверу и наличие папки на фтп за определённую дату.
все верно, но непосредственно проверку нет возможности произвести, так как это сетевое подключение, однако нам необходимо подключиться к адресу, и если подключение удалось вернуть res = true; Это логика работы, однако в парадигме лексики языка, такой непосредственной возможности нет, а значит нам ее надо создать. И тут возникает следующая ситуация:
Если мы подключаемся по адресу, и адрес существует, при этом состояние связи с сервером в порядке, метод отработает. Но, если нет связи, или объект подключения (адрес по которому подключаемся) отсутствует, то метод у нас вызовет исключение, и если возникает исключение, то мы должны вернуть res = false;. Вот и вся задача этого метода. Вспомогательно, для удобства, мы еще возвращаем ExceptMS для того что бы пользователь увидел что конкретно не так.

Добавлено через 3 минуты
Цитата Сообщение от Damenikx Посмотреть сообщение
То есть мы должны для начала подключиться к фтп.
если вы под этим
Цитата Сообщение от Damenikx Посмотреть сообщение
C#
1
2
3
var resFTP = (FtpWebRequest)FtpWebRequest.Create(FolderAdress); 
 res.Credentials = new NetworkCredential("login", "pass"); 
 res.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
подразумеваете подключение, то вы глубоко заблуждаетесь, это всего лишь навсего настройка. Которую кстати, мы уже провели в классе настроек, зачем писать дважды один и тот же код?

Добавлено через 1 минуту
Цитата Сообщение от Damenikx Посмотреть сообщение
С помощью метода Ftp.ListDirectoryDetails мы получаем информацию о всех папках лежащих по адресу FolderAdress (который мы задали ранее)
Это всего лишь навсего настройка, код у вас ничего не получает.
Цитата Сообщение от Damenikx Посмотреть сообщение
но не выводим его а просто получаем
А это правильных ход мыслей.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 11:22  [ТС]
Что-то я совсем ничего не понимаю, если это всего-лишь настройка, где это долбаное подключение, я уже всё перерыл, посмотрел, прочитал. Не понимаю блин!
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 11:31
статус коды очень пригодиться в дальнейшей работе, нужно будет завести словарик.

Добавлено через 5 минут
посмотрите в сторону
C#
1
2
3
var ftp = settings.RequestToDirrectoryDetails(settings.FullFTPAdressToDay );
FtpWebResponse response = (FtpWebResponse) ftp.GetResponse();
 ExceptMS = response.StatusDescription;
Кстати, в связи с поворотом в эту сторону переменную ExceptMS, переименовать в RMessage
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 11:33  [ТС]
Ага, значит нам нужна вот эта штука:

DirectoryStatus
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 11:36
Цитата Сообщение от Damenikx Посмотреть сообщение
Ага, значит нам нужна вот эта штука:
DirectoryStatus
где и когда?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 11:42  [ТС]
C#
1
2
3
var ftp = settings.RequestToDirrectoryDetails(FTPSettings.FullFTPAdressToDay ); //хватаем адрес до папки
FtpWebResponse response = (FtpWebResponse) ftp.GetResponse(); //ответ от сервера
 RMessage = response.StatusDescription; //заносим ответ в RMessage
Добавлено через 1 минуту
Цитата Сообщение от V_Monomax Посмотреть сообщение
Сообщение от Damenikx
Ага, значит нам нужна вот эта штука:
DirectoryStatus
где и когда?
В моменте когда мы получаем ответ от сервера

Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool CurDateFolderMayConnectt(DataTime CurrentDate, out string RMessage)
{
   ExceptMS = string.Empyty;
   var res = false;
   try
      {
var ftp = settings.RequestToDirrectoryDetails(FTPSettings.FullFTPAdressToDay ); //хватаем адрес до папки
FtpWebResponse response = (FtpWebResponse) ftp.GetResponse(); //ответ от сервера
 RMessage = response.FtpStatusCode.DirectoryStatus; //заносим ответ в RMessage
        }catch (WebException ex) 
      {
          RMEssage = string.Format("Сообщение об ошибке: {0}        StackTrace: {1}", ex.Message, ex.StackTrace);
      }
   return res;
}
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 12:31
Цитата Сообщение от Damenikx Посмотреть сообщение
RMessage = response.FtpStatusCode.DirectoryStatus; //заносим ответ в RMessage
так работать не будет, так как response, не имеет свойства FtpStatusCode, зато имеет свойство StatusCode.
так что придется оставить
C#
1
RMessage = response.StatusDescription;
но вот ваша логика верна в том что нам нужен FtpStatusCode, однако вы выбрали не тот перечислитель нам нужен
FtpStatusCode.CantOpenData да и еще и с отрицанием, по сути, нам надо сравнить response.StatusCode с FtpStatusCode.CantOpenData, и если не равно выдать true;. Пробуйте!

Добавлено через 2 минуты
Цитата Сообщение от Damenikx Посмотреть сообщение
FTPSettings.FullFTPAdressToDay
В данном случае надо пользоваться другим адресом, у которого есть возможность задать дату!
кроме того, вы забыли объявить переменную
Цитата Сообщение от Damenikx Посмотреть сообщение
settings
а все равно используете!

Добавлено через 3 минуты
Правда
Цитата Сообщение от V_Monomax Посмотреть сообщение
FtpStatusCode.CantOpenData
не является абсолютом, и это надо выяснить путем тестовых пусков.

Добавлено через 16 минут
Damenikx, собственно, теперь когда определились с набором функций, даже лучше если вы перейдете в студию, и продолжите писать там.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 14:03  [ТС]
Буду пробовать, как получится что-то дельное отпишусь!

Добавлено через 1 час 18 минут
Пока не получается, но я пытаюсь.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 14:10
Цитата Сообщение от Damenikx Посмотреть сообщение
Пока не получается
что конкретно не получается?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 14:32  [ТС]
Вообще ничего не получается, куча ошибок, пытаюсь прошурстить интернет, почитать что-то. Пока не выходит(

Добавлено через 1 минуту
Я не могу понять, что и как работает, отсюда не понимаю, что нужно сделать.

Добавлено через 1 минуту
не понимаю, что с чем сравнивать, как это писать, как это всё получается БЛИИИИИН!

Добавлено через 2 минуты
Я уже знатно пригорел!

Добавлено через 20 секунд
Уже одну клавиатуру унёс на мусорку.

Добавлено через 3 минуты
У нас есть переменная Settings она вообще нигде не описывается.

Добавлено через 9 минут
Сейчас буду начинать всё сначала. И начну с создания отдельного класса.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 14:36
Цитата Сообщение от Damenikx Посмотреть сообщение
Сейчас буду начинать всё сначала. И начну с создания отдельного класса.
стоп, не делайте этого!!!

Добавлено через 1 минуту
все элементарно и просто:
C#
1
var settings = new FTPSettings();
Дальше догадаетесь что к чему?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 14:37  [ТС]
Меня злит, что я туп, не могу понять, что и как, вроде всё понятно по коду, но когда начинаю что-то делать или менять впадаю в ступор, а понять почему ошибка не могу!
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 14:42
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool CurDateFolderMayConnectt(DataTime CurrentDate, out string RMessage)
{
   ExceptMS = string.Empyty;
   var res = false;
   try
      {
var settings = new FTPSettings();
var ftp = settings.RequestToDirrectoryDetails(settings. ); //вам следует понять что после точки выбрать
FtpWebResponse response = (FtpWebResponse) ftp.GetResponse(); //по сути запуск действия
 RMessage = response.StatusDescription; //получаем статус код и его расшифровку в виде строки
if(response.StatusCode!=...)//подумайте чему оно не должно быть равно?
{
res = true;
}
        }catch (WebException ex) 
      {
          RMEssage = string.Format("Сообщение об ошибке: {0}        StackTrace: {1}", ex.Message, ex.StackTrace);
      }
   return res;
}
Добавлено через 1 минуту
Damenikx, поправьте мелкие ошибки в данном коде, и попробуйте дать ответы на заданные вопросы в комментариях
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 14:53  [ТС]
Да не понимаю Я, не понимаю!

Добавлено через 26 секунд
Пошёл я учить методы и их описания в коде, я не могу понять ничего!

Добавлено через 1 минуту
C#
1
bool CurDateFolderMayConnectt(DataTime CurrentDate, out string RMessage)
Это объявление метода с параметрами, правильно?

Добавлено через 1 минуту
C#
1
2
ExceptMS = string.Empyty;
var res = false;
Здесь, если исключение возвращает пустую строку, то значение res будет false

Добавлено через 58 секунд
C#
1
var settings = new FTPSettings();
В переменную settings заносим данные из класса FTPSetting

То есть всё что мы описали в классе FTPSettings будут лежать теперь в переменной settings
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 15:05
Цитата Сообщение от Damenikx Посмотреть сообщение
Да не понимаю Я, не понимаю!
спокойно, вспомните ведь у нас есть класс FTPSettings, в котором есть FullFTPAdressCurrentDate(DateTime CurrentDate), кто вам мешает его использовать в ответе на первый вопрос?
Цитата Сообщение от Damenikx Посмотреть сообщение
Пошёл я учить методы и их описания в коде, я не могу понять ничего!
программирование не познается пустым зазубриванием, а познается на практике.
Кто вам мешает вспомнить что я говорил
Цитата Сообщение от V_Monomax Посмотреть сообщение
по сути, нам надо сравнить response.StatusCode с FtpStatusCode.CantOpenData, и если не равно выдать true;.
Понимаю, поплыли, ну не надо далеко от берегов уплывать

Добавлено через 9 минут
Цитата Сообщение от Damenikx Посмотреть сообщение
Это объявление метода с параметрами, правильно?
метода возвращающего значения и принимающего значения, а так же возвращающего значение типа string (там ключевое слово out, означает что мы это значение вернем, когда будем использовать этот метод, но при этом сам метод возвращает bool.
Цитата Сообщение от Damenikx Посмотреть сообщение
ExceptMS = string.Empyty;
устанавливаем пустым значение которое мы должны вернуть, иначе, без инициализации, нам компилятор выдаст ошибку (синтаксическая соль).
Цитата Сообщение от Damenikx Посмотреть сообщение
var res = false;
объявляем и присваиваем значение по умолчанию, переменной которую вернет метод.
Цитата Сообщение от Damenikx Посмотреть сообщение
Здесь, если исключение возвращает пустую строку, то значение res будет false
нет, не правильно, здесь пока ничего не происходит, идет только подготовка к нашему кардебалету исполнению метода
Цитата Сообщение от Damenikx Посмотреть сообщение
В переменную settings заносим данные из класса FTPSetting
вообще создаем экземпляр класса FTPSetting, который содержит наши настройки.

Не по теме:

Кстати есть варианты, когда настройки хранятся в настройках приложения (если память не изменяет settings.XML файле, при этом их там может быть множество, и тогда класс настроек получает их из файла, по переданному параметру в конструктор FTPSetting, например FTPSetting("сервер1");)


Цитата Сообщение от Damenikx Посмотреть сообщение
То есть всё что мы описали в классе FTPSettings будут лежать теперь в переменной settings
это у же ближе, но все же правильно говорить что переменная settings - является экземпляром FTPSettings.

Добавлено через 1 минуту
Damenikx, ну что, разъяснилось?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.10.2018, 15:43  [ТС]
C#
1
var ftp = settings.RequestToDirrectoryDetails(settings. )
Объявляем переменную фтп и присваиваем ей значение переменной settings с запросом на свойство директории который в свю очередь лежат параметры и переменная settings.

Добавлено через 2 минуты
Нет, не понимаю.

Добавлено через 2 минуты
Я не собираюсь зубрить, я хочу хотя бы понять то, что здесь написано, но только понять не после того, как мне объяснили и я вроде-бы, как понял, а просто посмотреть на код и понять, что он делает. Чтобы хоть что-то самому написать, но чтобы это сделать мне надо понять все эти свойства методы, экземпляры и куча всего. Следовательно надо читать и читать, а таким образом это всё делаете Вы, а ни как не я. Я же не буду каждый раз бежать на форум чтобы мне кто-то что-то помог, хочется саому добить

Добавлено через 1 минуту
Начну с задачек попроще, чтобы хоть в чём-то разобраться. Спасибо Вам за помощь!

Добавлено через 18 минут
C#
1
var ftp = settings.RequestToDirrectoryDetails(settings.FtpStatusCode.CantOpenData)
От безысходности сделал так.

Добавлено через 2 минуты
Не понимаю, не могу понять. Хоть убейте!

Добавлено через 7 минут
C#
1
var ftp = settings.RequestToDirrectoryDetails(settings.FullFTPAdressToDay)
Добавлено через 13 секунд
Тупой, как пробка
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
10.10.2018, 15:44
Цитата Сообщение от Damenikx Посмотреть сообщение
var ftp = settings.RequestToDirrectoryDetails(sett ings.FtpStatusCode.CantOpenData)
пробуйте по проще, settings, сразу поставили точку, и давай читать каждый метод и свойство, что они предлагают. Посмотрите документацию RequestToDirrectoryDetails в классе FTPSettings, что он там принимает на входе, посмотрите что вы написали в коментариях документации, выложите сюда, что у вас написано у параметра принимаемого методом!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.10.2018, 15:44

Скачивание файла с ftp сервера
Привет! Решил попробовать написать систему обновления для своей программы. Есть вот такая идея: создать сайт и вручную залить по ftp на...

Скачивание каталога с FTP сервера
Доброго времени суток. Работаю с FTP сервером в C# при помощи библиотеки BytesRoad.Net.Ftp. Появилась необходимость скачивать ВЕСЬ каталог...

Скачивание файлов с FTP сервера на локальный ЖД
Здравствуйте. Возникла проблема, возможно глупая и её решение должно быть элементарным, но всё же :) Добавлено через 9 минут ...

Скачивание файла с FTP-сервера с использованием Wget
Доброго времени суток! Задача - необходим батник чтобы он: 1. Скачивал необходимый файл с ftp(хранилище можем подобрать иное) 2....

Скачивание папки с удаленного сервера
WebClient wb = new WebClient(); wb.DownloadFile("https://cloud.mail.ru/public/46F4/Eqhw66Kb2", @"C:\test\sandbox"); Вот такой код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
180
Закрытая тема Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru