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

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

04.10.2018, 09:39. Показов 31698. Ответов 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
08.10.2018, 16:14  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от V_Monomax Посмотреть сообщение
я катаюсь под столом


не правильно ToDay - это текущая дата.
вообще-то там только имена файлов в папке на текущий день.
Цитата Сообщение от V_Monomax Посмотреть сообщение
вообще-то там только имена файлов в папке на текущий день.
Вопрос: я думал туда заносится информация о дате создания файла, о размере.

Цитата Сообщение от V_Monomax Посмотреть сообщение
не правильно ToDay - это текущая дата.
Прошу прощения, по текущей дате, а не по произвольной.

Цитата Сообщение от V_Monomax Посмотреть сообщение
я катаюсь под столом
Теперь и я катаюсь под столом
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 16:15
Damenikx, ну что поправили?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 16:17  [ТС]
Да, переписал на текущую дату.

/// Проверяем наличие файлов и папок по текущей дате и заносим о них информацию в DirectoryDetailsToDay

///Заносим список файлов в TodayFilesNames по текущей дате
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 16:19
Цитата Сообщение от Damenikx Посмотреть сообщение
я думал туда заносится информация о дате создания файла, о размере.
нет там только имя файла.
полная информация находится в DirectoryDetailsToDay - по сути массив строк с подробной информацией. Из которого мы извлекаем имя файла в TodayFileNames
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 16:25  [ТС]
Ага, я понял, спасибо
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 16:33
Damenikx, что ж, в этой части мы тоже в общем-то закончили, с чем я вас и поздравляю! Теперь у нас два класса:
1. Настройки фтп
2. Получение информации о файлах на фтп.
Хорошо, мы можем узнать файлы которые нам нужны, теперь осталось только их скачать. Хочу увидеть ваши предложения, о имени класса, задачей которого будет скачка файла на локальный адрес.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 16:39  [ТС]
Спасибо за поздравление. И спасибо, что оказывает мне такую помощь!

FilesFromFtpDownload

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

Добавлено через 51 секунду
DownloadFilesFromFtp
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 16:40
я предлагаю FtpDownloader. Как вам такое название?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
08.10.2018, 16:52  [ТС]
Превосходное!

Добавлено через 10 минут
Уважаемый V_Monomax !

К сожалению сегодня я уже должен бежать, можем ли мы продолжить с Вами завтра?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
08.10.2018, 17:21
Цитата Сообщение от Damenikx Посмотреть сообщение
Превосходное!
ок, все в той же папке создаем класс FtpDownloader
а внутри него прописываем:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public string FileOutPutFolder{get;set;} ="D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
 
public void Download()//метод обязателен для тестирования
{
   var settings = new FTPSettings();
   
   foreach (var fn in new FtpFilesInfo().TodayFileNames)
   {
      string ftpfilepath = settings.FullFTPAdressToDay+"/"+fn;
      using (WebClient request = new WebClient())
                {
                    request.Credentials = new NetworkCredential(settings.UserFTP, settings.PwdFTP);
                    byte[] fileData = request.DownloadData(ftpfilepath);
                    using (FileStream file = File.Create(FileOutPutFolder+"/"+fn))
                    {
                        file.Write(fileData, 0, fileData.Length);
                        file.Close();
                    }
                }
   }
}
ну что-же, проверить, задокументировать, закомментировать и выложить. И конечно хотелось бы, что-бы вы своими словами, не в комментариях к коду, а прям в сообщении написали чем занимается метод Download.

Добавлено через 6 минут
Цитата Сообщение от Damenikx Посмотреть сообщение
К сожалению сегодня я уже должен бежать, можем ли мы продолжить с Вами завтра?
ок.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
09.10.2018, 08:43  [ТС]
Доброе утро.

Перенёс код, но ругается на эту строку:

C#
1
public string FileOutPutFolder{get;set;} ="D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
Недопустимая лексема "=" в объявлении класса, структуры или интерфейса
Недопустимая лексема "(" в объявлении класса, структуры или интерфейса
System.DataTime.Now является свойство, но используется, как тип

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

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
29
30
31
namespace ConsoleApplication13.WTPWorker
{
    class FtpDownloader
    {
        /// <summary>
        /// здесь объявляем место, куда будет скачиваться файл в соответствии с сегодняшней датой.
        /// </summary>
        public string FileOutPutFolder { get; set; } ="D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
        /// <summary>
        /// Создаём метод Donwload
        /// </summary>
        public void Download()
        {
            var settings = new FTPSettings(); // Объявляем переменную setting
            foreach (var fn in new FtpFilesInfo().TodayFileNames)//проверяем информацию о файлах с сегодняшней датой.
            {
                string ftpfilepath = settings.FullFTPAdressToDay+"/"+fn; //обращаемся к фтп адресу
                using (WebClient request = new WebClient()) // создаём подключение к фтп-серверу
                {
                    request.Credentials = new NetworkCredential(settings.UserFTP, settings.PwdFTP); //вводим логин, пароль.
                    byte[] filedata = request.DownloadData(ftpfilepath); // объявляем путь, куда будет скачиваться файл
                    using (FileStream file = File.Create(FileOutPutFolder+"/"+fn)) //скачиваем
                    {
                        file.Write(filedata, 0, filedata.Length); //запись списка скачиваемых файлов
                        file.Close(); //закрываем
                    }
                }
            }
        }
    }
}
Добавлено через 6 минут
Данный метод вытаскиваетс всю информацию из классов FTPSettings и FTPFilesInfo и по этой информации выкачивает файл
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
09.10.2018, 09:07
Цитата Сообщение от Damenikx Посмотреть сообщение
Перенёс код, но ругается на эту строку:
понятно, у вас фреймворк старенький. Ок, тогда переделаем.
C#
1
2
3
4
5
6
7
string _FileOutPutFolder = "D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
 
public string FileOutPutFolder 
{ 
get{return _FileOutPutFolder;}
set{ _FileOutPutFolder = value;}
}
Поправьте в коде и не забудьте про комментарии и документацию, учтите, что
C#
1
string _FileOutPutFolder = "D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
является значением по умолчанию.

Добавлено через 15 минут
ну что же, вот и третий класс у нас готов, осталось только проверить что все это работает правильно.
теперь в главном классе (предварительно убедившись что папка на сегодняшний день существует, и в ней есть файлы), необходимо в методе майн прописать следующее:
C#
1
2
3
Console.WriteLine("{0}|Начата загрузка файла", DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"));
new FtpDownloader().Download();
Console.WriteLine("{0}|Загрузка файла окончена", DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"));
Собственно вот и все, должно работать, если все настройки верные, при этом сам код легко редактируемый.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
09.10.2018, 09:21  [ТС]
Вот, хотел у вас спросить про этот мейн. Для его вызова нам создавать новый отдельный класс отдельным файлом или мы уже где-то в текущем должны делать вывод

Никак с этим мейном не могу додумать!

Добавлено через 4 минуты
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
namespace ConsoleApplication13.WTPWorker
{
    class FtpDownloader
    {
        /// <summary>
        /// здесь объявляем место, куда будет скачиваться файл в соответствии с сегодняшней датой.
        /// </summary>
        public string _FileOutPutFolder ="D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
///<sumary>
///Обращаемся к значению по умолчанию
///</sumary>
public string FileOutPutFolder 
{ 
get
{
return _FileOutPutFolder; //возвращаем значение по умолчанию
}
set{
 _FileOutPutFolder = value; обнуляем
}
}
        /// <summary>
        /// Создаём метод Donwload
        /// </summary>
        public void Download()
        {
            var settings = new FTPSettings(); // Объявляем переменную setting
            foreach (var fn in new FtpFilesInfo().TodayFileNames)//проверяем информацию о файлах с сегодняшней датой.
            {
                string ftpfilepath = settings.FullFTPAdressToDay+"/"+fn; //обращаемся к фтп адресу
                using (WebClient request = new WebClient()) // создаём подключение к фтп-серверу
                {
                    request.Credentials = new NetworkCredential(settings.UserFTP, settings.PwdFTP); //вводим логин, пароль.
                    byte[] filedata = request.DownloadData(ftpfilepath); // объявляем путь, куда будет скачиваться файл
                    using (FileStream file = File.Create(FileOutPutFolder+"/"+fn)) //скачиваем
                    {
                        file.Write(filedata, 0, filedata.Length); //запись списка скачиваемых файлов
                        file.Close(); //закрываем
                    }
                }
            }
        }
    }
}
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
09.10.2018, 09:32
во первых
Цитата Сообщение от Damenikx Посмотреть сообщение
/// <summary> /// здесь объявляем место, куда будет скачиваться файл в соответствии с сегодняшней датой. /// </summary> public string _FileOutPutFolder ="D://FTPFiles/"+DateTime.Now.ToString("yyyyMMdd");
не верно, потому что здесь задается значение по умолчнанию, соответственно
Цитата Сообщение от Damenikx Посмотреть сообщение
return _FileOutPutFolder; //возвращаем значение по умолчанию
то же не верно, так как мы возвращаем значение папки куда будем скачивать, и конечно
Цитата Сообщение от Damenikx Посмотреть сообщение
_FileOutPutFolder = value; обнуляем
на такое компилятор ругаться должен, забыли про "//"
и конечно в корне не верно предположение
Цитата Сообщение от Damenikx Посмотреть сообщение
обнуляем
как раз наоборот, присваиваем/изменяем значение, по сути получается следующее:
C#
1
2
3
4
var ftpd = new FtpDownloader
{
  FileOutPutFolder ="D://MyFiles/"+DateTime.Now.ToString("yyyyMMdd") // вот в этот момент value ="D://MyFiles/"+DateTime.Now.ToString("yyyyMMdd"), и следовательно происходит _FileOutPutFolder = value;, т.е. таким образом вы извне присваиваем значение (ну не хочется нам загружать данные в папку по умолчанию, нужно загрузить в другую, дабы не перекомпилировать, не переписывать программу, мы закладываем здесь возможность расширения функционала нашей программы, так же как и в настройках заложена возможность скачивания по произвольной дате.
};
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
09.10.2018, 09:46  [ТС]
Я понял, сейчас поменяю!

Добавлено через 6 минут
Я понял, сейчас поменяю!

Сделал отдельный класс Program для вызова метода мейн, вписал туда всё, что вы сказали сделать. Столкнулся с проблемой:

Копирует файлы, только если в папке FTPWorker уже заранее создана папка с текущей датой, а так всё работает!

Я если честно в некотором шоке, от того, что вообще кто-то (не я в данном случае вы) помогли мне сделать столько много.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
09.10.2018, 09:56
Цитата Сообщение от Damenikx Посмотреть сообщение
уже заранее создана папка с текущей датой, а так всё работает!
Это можно поправить, в методе
Цитата Сообщение от Damenikx Посмотреть сообщение
Download()
в цикле
Цитата Сообщение от Damenikx Посмотреть сообщение
foreach (var fn in new FtpFilesInfo().TodayFileNames)
сделать проверку на существование папки, если не существует, то создать, по сути это еще один метод класса FtpDownloader

Попробуйте самостоятельно создать такой метод, добавьте его в код, и соответственно выложите здесь, посмотрим, удалось ли мне вас чему-то научить.

Добавлено через 1 минуту
Цитата Сообщение от Damenikx Посмотреть сообщение
Я если честно в некотором шоке, от того, что вообще кто-то (не я в данном случае вы) помогли мне сделать столько много.
у вас задача интересная, и кроме того, вы проявляете старание, а это приятно.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
09.10.2018, 10:58  [ТС]
Я понял, сейчас попробую сделать, как сделаю сразу выложу сюда

Добавлено через 42 минуты
string Todaysdate = DateTime.Now.ToString("-dd-MM-yyyy-(hh-mm-ss)");

{
Directory.CreateDirectory("c:/Top-Level Folder/Subfolder/Test" + Todaysdate);

Сделал вот так, работает !

Добавлено через 11 минут
Я хотел бы у вас ещё кое о чём спросить. Если вы не против
1
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
09.10.2018, 11:01
Цитата Сообщение от Damenikx Посмотреть сообщение
хотел бы у вас ещё кое о чём спросить. Если вы не против
по данной теме?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
09.10.2018, 11:05  [ТС]
Да. Я по поводу "защиты от дурака" посоветуйте с чего начать?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
09.10.2018, 11:07
Цитата Сообщение от Damenikx Посмотреть сообщение
Да. Я по поводу "защиты от дурака" посоветуйте с чего начать?
защиты чего, и от кого? просто если вы речь ведете, о защите данных, то тут надо рассматривать сценарии, и честно, пока не одного сценария представить не могу.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2018, 11:07

Скачивание файла с 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;); Вот такой код...


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

Или воспользуйтесь поиском по форуму:
140
Закрытая тема Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru