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

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

04.10.2018, 09:39. Показов 28631. Ответов 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
 Аватар для Young Vu
133 / 103 / 43
Регистрация: 01.03.2018
Сообщений: 291
04.10.2018, 10:31
C#
1
2
Console.WriteLine(DateTime.Now.ToShortDateString());
// 04.10.2018
Добавлено через 41 секунду
но все зависит от того в каком формате у вас называется папка
1
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 10:37
Damenikx, в программировании все возможно. Соответственно вам нужно просто указать путь
C#
1
2
 
string path = "ftp://.../Папка_Для_Скачивания/"+DateTime.Today.ToString("dd_MM_YYYY");\\"dd_MM_YYYY"-это формат в котором вам нужно вывести дату, здесь в качестве разделителя используется "_", у вас может быть что угодно.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 10:47  [ТС]
Таким образом я скачаю папку, а надо файлы из этой папки)

Добавлено через 1 минуту
папка называется допустим: 21022018
В ней есть 4 файла: 1.txt, 2.txt, 3.txt, 4.txt.
Вот именно эти 4 файла из этой папки, которая находится на фтп сервере, нужно вытянуть на локальный компьютер.

Добавлено через 3 минуты
Для начала я сделал скачку с фтп данным с способом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
// Create a new instance.
Ftp client = new Ftp();
// Connect to the FTP server.
client.Connect( "myserver" );
// Authenticate.
client.Authenticate( "userName" , "password" );
// ...
// Download an entire directory '/myfolder' to 'c:\'.
client.DownloadDirectory( "/myfolder" , "c:\\" );
// ...
// Disconnect.
client.Disconnect();
Данным способом я могу скачать конкретную папку.
А нужно файлы из этой папки и причём по актуальной дате.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 11:04
уточните что вы подразумеваете под
Цитата Сообщение от Damenikx Посмотреть сообщение
нужно файлы из этой папки и причём по актуальной дате
т.е. надо проверить файлы на актуальность даты или просто файлы в этой папке
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 11:10  [ТС]
Получается проверить папку на актуальность и вытащить из неё файлы.
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 11:33
используйте Ftp.ListDirectoryDetails
в вашем случае должно быть что-то типа
C#
1
var fList =client.ListDirectoryDetails;
А затем перебором скачивайте файлы.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 12:06  [ТС]
Не понимаю ни черта)))
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 12:15
Цитата Сообщение от Damenikx Посмотреть сообщение
Не понимаю ни черта)))
что не понятного?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 13:06  [ТС]
Я не понимаю каким образом привязать выборку даты к скачке файлов

Добавлено через 39 минут
У меня получилось реализовать скачивания определённого файла в папку по средствам данного кода

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string ftpfilepath = "/1234/txt.txt";
string ftphost = "111.11.11.11";
string inputfilepath = "c://";
int ftpport = 1111;
 
string ftpfullpath = "ftp://" +ftphost + ftpport +ftpfilepath;
 
using (WebClient request = new WebClient())
{
request.Credentails = new NetworkCredential("user", "pass");
byte[] fileData = request.Download (ftpfullpath);
 
using (FileStream file = file.Create(inputfilepath))
{
file.Whrite(fileData, 0 , fileData.Length);
file.Close;
}
}
}
}
}
Но как сделать так, чтобы вытягивало из папки по сегодняшней дате файлы что в ней находятся и скачивало на локальный комп я вообще не догоняю (я туп).
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 13:46
по сути вам нужно менять ftpfilepath, который к тому же состоит из двух частей:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
string FPath ="/"+DateTime.Now.ToString("ddMMYYYY");
string[] FileNames = new string[] {"txt.txt","2txt.txt","3txt.txt","4txt.txt"};
//пользуясь вашим кодом делаю перебор файлов:
foreach(var fn in FileNames)
{
  string ftpfilepath = FPath+"/"+fn;
  string ftpfullpath = "ftp://" +ftphost + ftpport +ftpfilepath;
  using (WebClient request = new WebClient())
{
request.Credentails = new NetworkCredential("user", "pass");
byte[] fileData = request.Download (ftpfullpath);
 
using (FileStream file = file.Create(inputfilepath))
{
file.Whrite(fileData, 0 , fileData.Length);
file.Close;
}
}
}
}
}
}
Осталось только вытянуть имена файлов которые есть в папке.

Добавлено через 12 минут
что-бы получить информацию о содержимом папки, используйте код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   List<string> ListDirectoryDetails = new List<string>();
    var ftp = (FtpWebRequest)FtpWebRequest.Create("путь к папке");
    ftp.Credentials = new NetworkCredential("логин", "пароль");
    ftp.KeepAlive = false;
    ftp.UseBinary = true;
    ftp.Proxy =//ваш прокси
    ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    var response = (FtpWebResponse)ftp.GetResponse();
    var responseStream = response.GetResponseStream();
    var reader = new StreamReader(responseStream);
    
    while (!reader.EndOfStream)
    {
        ListDirectoryDetails.Add(reader.ReadLine());
    }
    responseStream.Close();
    response.Close();
    reader.Close();
посмотрите что вам вернет ListDirectoryDetails
в консольном приложении для этого используйте следующий код

C#
1
2
3
4
5
foreach(var dt in ListDirectoryDetails)
{
   Console.WriteLine(dt);
}
Console.Read();
По моим ощущениям, должно получиться что-то типа строки с именем файла и детальными данными, если не сложно, выложите такую строку сюда, и далее посмотрим.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 14:32  [ТС]
Хорошо, сейчас всё попробую и пришлю. Спасибо.

Добавлено через 36 минут
drwxr- xr - x 1 ftp ftp 0 Oct 04 09:12 20181002

Добавлено через 1 минуту
Я ввёл только 2 часть кода которую вы прислали, её надо связывать с первой?

Добавлено через 3 минуты
Если их связывать то мы будем дважды подкючаться к фтп
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 14:48
Цитата Сообщение от Damenikx Посмотреть сообщение
Я ввёл только 2 часть кода которую вы прислали
Это то что мне нужно было.
чуть позже отвечу.

Добавлено через 3 минуты
итак в строке
Цитата Сообщение от Damenikx Посмотреть сообщение
drwxr- xr - x 1 ftp ftp 0 Oct 04 09:12 20181002
20181002 - это название папки, а вот файла здесь нет. А у вас в папке есть вообще файлы?

Добавлено через 33 секунды
давайте еще одну строчку, там где есть точно файл.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 14:53  [ТС]
Да 4 штука) но только мне надо будет их вытягивать независимо от их имени. Тоесть там файлы не обязательно 1,2,3.txt там могут быть любые. Но файлы внутри папки имеются в данный момент
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 15:00
Цитата Сообщение от Damenikx Посмотреть сообщение
Да 4 штука
собственно эту информацию мы получаем в
Цитата Сообщение от V_Monomax Посмотреть сообщение
ListDirectoryDetails
теперь эту информацию из строки надо перепарсить в набор нужных данных, а для это нужна строка, так как по памяти, не помню что он возвращает, но в итоге мы получим
Цитата Сообщение от Damenikx Посмотреть сообщение
вытягивать независимо от их имени
но существующие в папке.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 15:01  [ТС]
Да, те, которые в папке
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 15:08
по сути
Цитата Сообщение от Damenikx Посмотреть сообщение
drwxr- xr - x 1 ftp ftp 0 Oct 04 09:12 20181002
мы уже видим имя папки
Цитата Сообщение от Damenikx Посмотреть сообщение
20181002
теперь осталось получить имя файла, затем при помощи Split получить набор строк, проверить что в нем есть эелемент с нужным номером в названии которого присутствует ".". После чего мы уже будем, переходить к первой части кода.

по сути должно быть что-то типа
C#
1
2
3
4
5
6
7
8
9
10
foreach(var dt in ListDirectoryDetails)
{
   var Sarr =dt.Split(" ");
   if(Sarr.Lenght>11&&Sarr[10].Contains("."))
   {
         Console.WriteLine("Файл: {0}",Sarr[10]);
   }
   
}
Console.Read();
если я не ошибся, записывая по памяти, то сейчас вторая часть кода вам будет выдавать имена файлов.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 15:17  [ТС]
Ругается на строку
C#
1
var Sarr =dt.Split(" ");
Ошибка:
Наиболее подходящий перегруженный метод для string.Split(params char[]) имеет несколько недопустимых элеметов
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
04.10.2018, 15:18
неправильно написал, поменял 10 на 11
C#
1
2
3
4
5
6
7
8
9
10
foreach(var dt in ListDirectoryDetails)
{
   var Sarr =dt.Split(" ");
   if(Sarr.Lenght>11&&Sarr[11].Contains("."))
   {
         Console.WriteLine("Файл: {0}",Sarr[11]);
   }
   
}
Console.Read();
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.10.2018, 15:20  [ТС]
Пытался как-то исправить поменяв на одинарные и убрав кавычки вовсе - не помогает, программа работает на выдаёт пустую консоль.

Добавлено через 1 минуту
Поменял с 10 на 11, не помогло. Всё тоже самое, подсвечивает с ошибкой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2018, 15:20
Помогаю со студенческими работами здесь

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


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru