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

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

04.10.2018, 09:39. Показов 31633. Ответов 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
06.12.2018, 11:24  [ТС]
Студворк — интернет-сервис помощи студентам
Хех, интересно пишет!

OpeningDataOpeningData
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 11:47
Цитата Сообщение от Damenikx Посмотреть сообщение
Хех, интересно пишет!
правда все одно и то же
давайте попробуем так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public bool DirectoryExists(string directory, out string msg)
{
msg="";
   try
        {
             var ftp = RequestToDirrectoryDetails(FTPAdress + directory);
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {
                   msg += response.StatusCode +  Environment.NewLine;
                    var rm = response.WelcomeMessage;
                    msg += response.StatusCode + Environment.NewLine;
                   var rms = response.GetResponseStream();                    
                    msg += response.StatusCode + Environment.NewLine;
                   if(response.StatusCode == FtpStatusCode.CommandOK)
                     {
                            response.Close();
                             return true;
                     }
 
                }
                return false;
        }catch(WebException wex)
         { 
           msg+=wex.Message;
          return false;
          }
}
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 12:01  [ТС]
PathnameCreatedPathnameCreatedPathnameCr eated
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 12:07
Цитата Сообщение от Damenikx Посмотреть сообщение
PathnameCreatedPathnameCreatedPathnameCr eated
а это уже хорошо, тогда перепишем наш метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public bool DirectoryExists(string directory)
{
   try
        {
             var ftp = RequestToDirrectoryDetails(FTPAdress + directory);
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {                   
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                            response.Close();
                             return true;
                     }
                     else{return false;}
 
                }
               
        }catch(WebException wex)
         {            
          return false;
          }
}
не забудьте убрать вспомогательные строки там где используете, и теперь метод, должен действительно проверять создана ли папка. Для эксперимента попробуйте задать не существующую папку.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 12:24  [ТС]
Если задать не существующую папку, то программа вылетает )
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 13:38
Цитата Сообщение от Damenikx Посмотреть сообщение
Если задать не существующую папку, то программа вылетает )
все правильно, забыл убрать вычленение веб ошибки. Должно быть так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public bool DirectoryExists(string directory)
{
   try
        {
             var ftp = RequestToDirrectoryDetails(FTPAdress + directory);
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {                   
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                            response.Close();
                             return true;
                     }
                     else{return false;}
 
                }
               
        }catch
         {            
          return false;
          }
}
Добавлено через 42 секунды
а на существующей папке возвращает истину?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 13:48  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
все правильно, забыл убрать вычленение веб ошибки. Должно быть так:
Нет-нет-нет )) Я уже так пробовал, не получается
Цитата Сообщение от V_Monomax Посмотреть сообщение

а на существующей папке возвращает истину?
А на существующей папки работает, выводит то, что лежит в папке Москва
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 14:11
Цитата Сообщение от Damenikx Посмотреть сообщение
А на существующей папки работает, выводит то, что лежит в папке Москва
мне интересно что возвращает код DirectoryExists, а не что там делается после...
Цитата Сообщение от Damenikx Посмотреть сообщение
Нет-нет-нет )) Я уже так пробовал, не получается
сообразил, у нас переполнение стека из-за не закрытого соединения, нужно переписать метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 try
        {
             // var res = false; // использовать в качестве возвращаемого значения, если текущий вариант не пройдет
             var ftp = RequestToDirrectoryDetails(FTPAdress + directory);
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {                   
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                            response.Close();
                            return true;//res=true
                     }
                     else
                     {
                      response.Close();
                      return false;//res=false
                      }
 
                }
               // return res;
        }catch
         {            
          return false;
          }
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 14:47  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
все правильно, забыл убрать вычленение веб ошибки. Должно быть так:
Нет-нет-нет )) Я уже так пробовал, не получается
Цитата Сообщение от V_Monomax Посмотреть сообщение

а на существующей папке возвращает истину?
А на существующей папки работает, выводит то, что лежит в папке Москва
Цитата Сообщение от V_Monomax Посмотреть сообщение
сообразил, у нас переполнение стека из-за не закрытого соединения, нужно переписать метод:
Пробовал закрывать, как вы предложили, тоже не помогло
C#
1
var res
Результата не принесло.

Сейчас попробую найти, что возвращает нам DirectoryExists.

Добавлено через 3 минуты
Удалённый сервера возвратил ошибку550) Файл недоступен (например, не найден или к нему нет доступа).

Добавлено через 9 минут
На самом деле очень странно. Почему то ругается он вообще на то, что вроде как не должен.
На класс FtpFilesInfo:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
List<string> CurFolderDirectoryDetails(FtpWebRequest FTP)
        {
            var res = new List<string>();
            var response = (FtpWebResponse)FTP.GetResponse();//тута
            var responseStream = response.GetResponseStream();
            var reader = new StreamReader(responseStream);
 
            while (!reader.EndOfStream)
            {
                res.Add(reader.ReadLine());
            }
            responseStream.Close();
            response.Close();
            reader.Close();
            return res;
        }
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 15:26
Цитата Сообщение от Damenikx Посмотреть сообщение
var response = (FtpWebResponse)FTP.GetResponse();//тута
ай-яй-яй, лень вперед батьки родилась! Конечно, нам надо перенастроить это все безобразие, тогда будет нормально, по сути метод надо переписать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public bool DirectoryExists(string directory)
{
   try
        {
             var ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAdress + directory);
             ftp.Credentials = new NetworkCredential(UserFTP, PwdFTP); ///логин, пароль
             ftp.KeepAlive = false;///не держим соединение после выполнения запроса
             ftp.UseBinary = true;///тип данных для передачи
             ftp.Method = WebRequestMethods.Ftp.PrintWorkingDirectory;
 
               using (FtpWebResponse response = ftp.GetResponse() as FtpWebResponse)
                {                   
                   if(response.StatusCode == FtpStatusCode.PathnameCreated)
                     {
                            //response.Close(); - он нам не нужен потому как пользуемся using, и он все это сделает
                             return true;
                     }
                     else{return false;}
 
                }
               
        }catch
         {            
          return false;
          }
}
здесь запрос лучше сформировать сызнова, так как если мы изменим существующий, то он и будет измененым, что-бы этого избежать мы его формируем сызнова и работаем с ним.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 15:38  [ТС]
Хотите посмеяться? Я так делал... немного с ошибками но такой вариант я делал изначально, перед тем, как у Вас спрашивал по поводу писать ли новый метод или переписывать старый. Так вот, сызнова, (прикольное слово, запишу в свой словарик) та же ошибка
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 16:26
проверьте пользователя и пароль.
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 16:32  [ТС]
Если вводить папку Москва, список выпадает, если ввести несуществующую папку, вылетает программа. Проверил пароль, логин, наличие папки.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 16:43
Цитата Сообщение от Damenikx Посмотреть сообщение
если ввести несуществующую папку, вылетает программа.
по идее такого не должно быть, потому как мы используем перехватчик исключений. Выложите код, где вызываете метод.
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
06.12.2018, 16:54  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (directoryCheck)
            {
                foreach (var css in new FtpFilesInfo().CurFolderDirectoryDetails(CurFolderPath, settings))
                {
                    listBox1.Items.Add(css);
                }
                
            }
            else
            {
                string caption = "Ошибка подключения!";
                string messagein = "Неверно указано имя папки, логин или пароль. Проверьте правильность введённых данных либо обратитесь к сетевому администратору.";
                MessageBox.Show(messagein, caption, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
06.12.2018, 17:08
давайте попробуем, пока отказаться от этого кода, и тупо попробуем вывести directoryCheck (приведенный код пока закомментируйте).
и выведите пока только
C#
1
MessageBox.Show("папка существует: "+directoryCheck);
и попробуйте варианты с существующей и не существующей, что он вам выдаст?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
07.12.2018, 09:18  [ТС]
День добрый!
Итак...
Написал, как вы сказали.

Выпадает окно со следующим текстом:

Папка существуетTrue

Окно выпадает в любом случае, есть папка либо же её нету без разницы.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
07.12.2018, 09:30
Цитата Сообщение от Damenikx Посмотреть сообщение
Окно выпадает в любом случае, есть папка либо же её нету без разницы.
поэтому программа и вылетает, значит надо думать дальше.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
07.12.2018, 09:39  [ТС]
Странно почему выводить true, вроде же должно выводить просто сообщение.

Добавлено через 6 минут

Не по теме:

Только сейчас заметил, что вы, судя по аватарке, смотрели мультфильм "Жизнь жуков" так, что я хотел сказать, ФЛИК РУЛИТ!

0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
07.12.2018, 09:40
что-бы не мучатся давайте в проекте создадим тест.
Для этого в корень проекта жмякаем правой кнопкой, выбираем добавить проект, выбираем Тест.
После чего в тесте добавляем ссылку на ваш проект формы.
Справитесь?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2018, 09:40

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
680
Закрытая тема Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru