Работа с ФТП

kasandra

Client
Регистрация
21.03.2016
Сообщения
14
Благодарностей
4
Баллы
3
Здраствуйте, прошу совета как выполнить следующую задачу.
Есть удаленный сервер-хранилище на который захожу через фтп, на котором несколько тысяч загруженых изображений в общей папке. Есть определенный список имен файлов которые нужно загрузить с сервера. Как сделать шаблон, чтобы скачать именно файлы из списка, т.е поиск и выборка именно по имени файла?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Элементарно.
Получить список файлов в директории, выбрать нужные совпадения и их скачать.
В зенно есть встроенные методы, можно на кубиках сделать, но быстрее так.

C#:
var list = project.Lists["list"];//список с именами требуемых файлов
var ftp_folder = "";//путь к папке на сервере
var downloadpath = "";//путь к папке на компьютере куда скачивать файлы
//данные для подключения
string host = "my.ftpserver.example";
int port = 21;
string protocol = "ftp";
string login = "admin";
string pass = "admin";
string proxy = "";
//

ZennoPoster.FtpGetList(host,port,protocol,login,pass,proxy,ftp_folder,false,false).Where(x=>list.Contains(x)).AsParallel().ForAll(file=>{
    ZennoPoster.FtpDownload(host,port,protocol,login,pass,proxy,file,downloadpath);
});
 

kasandra

Client
Регистрация
21.03.2016
Сообщения
14
Благодарностей
4
Баллы
3
Элементарно.
Получить список файлов в директории, выбрать нужные совпадения и их скачать.
В зенно есть встроенные методы, можно на кубиках сделать, но быстрее так.

C#:
var list = project.Lists["list"];//список с именами требуемых файлов
var ftp_folder = "";//путь к папке на сервере
var downloadpath = "";//путь к папке на компьютере куда скачивать файлы
//данные для подключения
string host = "my.ftpserver.example";
int port = 21;
string protocol = "ftp";
string login = "admin";
string pass = "admin";
string proxy = "";
//

ZennoPoster.FtpGetList(host,port,protocol,login,pass,proxy,ftp_folder,false,false).Where(x=>list.Contains(x)).AsParallel().ForAll(file=>{
    ZennoPoster.FtpDownload(host,port,protocol,login,pass,proxy,file,downloadpath);
});
Спасибо огромное!!! Но столкнулась с небольшой проблемой, поиск файлов не ведется в указанной папке, хотя скрипт папку вроде видит, если перекинуть файлы в корневую директорию все нормально, а вот в указанной папке почему то поиск не идет

103255


вот лог
Тип Время Сообщение
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Ошибка при проверке существования файла pics0014.jpg на Ftp узле 123.58.208.218 Файл /pics0014.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Ошибка при проверке существования файла pics0017.jpg на Ftp узле 123.58.208.218 Файл /pics0017.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Ошибка при проверке существования файла pics0015.jpg на Ftp узле 123.58.208.218 Файл /pics0015.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Ошибка при проверке существования файла pics0016.jpg на Ftp узле 123.58.208.218 Файл /pics0016.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Ошибка при проверке существования файла pics0018.jpg на Ftp узле 123.58.208.218 Файл /pics0018.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Ошибка при проверке существования файла pics0021.jpg на Ftp узле 123.58.208.218 Файл /pics0021.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Ошибка при проверке существования файла pics0019.jpg на Ftp узле 123.58.208.218 Файл /pics0019.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Состояние текущего подключения FTP Начальный каталог: /
09:51:44 Ошибка при проверке существования файла pics0020.jpg на Ftp узле 123.58.208.218 Файл /pics0020.jpg не существует на Ftp узле 123.58.208.218/
09:51:44 Выполнение кода C# Результат: ok
 
Последнее редактирование:
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Поэкспериментируйте с указанием пути к папке на сервере. Возможно, стоит просто добавить '/' в конце пути?
 
  • Спасибо
Реакции: kasandra

kasandra

Client
Регистрация
21.03.2016
Сообщения
14
Благодарностей
4
Баллы
3
Поэкспериментируйте с указанием пути к папке на сервере. Возможно, стоит просто добавить '/' в конце пути?
Пробовала и так и этак, но пока работает только если перенести файлы в корневую директорию. Но это вообще не проблема, несколько лишних кликов, зато Вы меня избавили от нескольких часов ручной работы ежедневно!
Grazie mille!! *KISSING*
 
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
а, ну да.
Пробовала и так и этак, но пока работает только если перенести файлы в корневую директорию. Но это вообще не проблема, несколько лишних кликов, зато Вы меня избавили от нескольких часов ручной работы ежедневно!
Grazie mille!! *KISSING*
надо указать и во время скачивания файл путь к файлу. Моя оплошность.
C#:
ZennoPoster.FtpGetList(host,port,protocol,login,pass,proxy,ftp_folder,false,false).Where(x=>list.Contains(x)).AsParallel().ForAll(file=>{
    ZennoPoster.FtpDownload(host,port,protocol,login,pass,proxy,string.Join("/", new string[]{ftp_folder,file}),downloadpath);
});
 
  • Спасибо
Реакции: kasandra

kasandra

Client
Регистрация
21.03.2016
Сообщения
14
Благодарностей
4
Баллы
3
а, ну да.

надо указать и во время скачивания файл путь к файлу. Моя оплошность.
C#:
ZennoPoster.FtpGetList(host,port,protocol,login,pass,proxy,ftp_folder,false,false).Where(x=>list.Contains(x)).AsParallel().ForAll(file=>{
    ZennoPoster.FtpDownload(host,port,protocol,login,pass,proxy,string.Join("/", new string[]{ftp_folder,file}),downloadpath);
});
Все работает!!! ураа!!! :bo::bp::bp:
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)