Как получить все файлы с ftp?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Как получить все файлы с ftp?
Есть задача - необходимо получить список файлов, упрощенно скачать все файлы, которые есть в папке на ftp. Среда Clarion 6.3 стандартные шаблоны. Может есть какое внешнее бесплатное приложение, которое это может делать? Для работы с ftp пользуем ncftpget и ncftpput, но, кажется, эти проги не умеют давать список. В идеале хотелось-бы получить список файлов в txt-файл. Дальше его уже считаю и последовательно получу все файлы.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8028
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Re: Как получить все файлы с ftp?
Мы для этих целей используем библиотеку Catalyst SocketTools (есть FTP форума).
В ней все это и многое другое по работе с FTP есть. Минус - это не бесплатная библиотека ...
В ней все это и многое другое по работе с FTP есть. Минус - это не бесплатная библиотека ...
Make Clarion Great Again ! 
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Как получить все файлы с ftp?
Вот кто то из наших писал, по моему.alex789 писал(а):Есть задача - необходимо получить список файлов, упрощенно скачать все файлы, которые есть в папке на ftp. Среда Clarion 6.3 стандартные шаблоны. Может есть какое внешнее бесплатное приложение, которое это может делать? Для работы с ftp пользуем ncftpget и ncftpput, но, кажется, эти проги не умеют давать список. В идеале хотелось-бы получить список файлов в txt-файл. Дальше его уже считаю и последовательно получу все файлы.
Ниже файл и пример как работать.
Код: Выделить всё
Msg('Подключение к ' & CLIP(GLO:Server))
IF NOT FTPClient.IsSession()
FTPClient.Init(GLO:Server)
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
END
FTPClient.ShowErrors(FALSE)
IF CLIP(GLO:User) <> '' AND CLIP(GLO:Password) <> ''
Err# = FTPClient.SetServerUser(CLIP(GLO:User),CLIP(GLO:Password))
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
DebugOut(Err# & ' SetServerUser')
IF Err# <> 0 THEN MESSAGE('Ошибка при подключении'); RETURN END
END
Err# = FTPClient.Connect()
DebugOut(Err# & ' Connect')
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
IF Err# <> 0 THEN MESSAGE('Ошибка при подключении'); RETURN END
Msg('Получение списка каталогов')
Err# = FTPClient.GetDirectoryList(DirList)
DebugOut(Err# & ' GetDirectoryList 1')
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
IF Err# <> ERROR_NO_MORE_FILES THEN MESSAGE('Ошибка при получении списка каталогов'); RETURN END
IF CLIP(GLO:FTPFolder) <> ''
Msg('Переход в ' & CLIP(GLO:FTPFolder))
Err# = FTPClient.ChangeDirectory(CLIP(GLO:FTPFolder))
DebugOut(Err# & ' ChangeDirectory')
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
IF Err# <> 0 THEN MESSAGE('Ошибка при смене каталога'); RETURN END
Msg('Получение списка каталогов')
Err# = FTPClient.GetDirectoryList(DirList)
DebugOut(Err# & ' GetDirectoryList 2')
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
IF Err# <> ERROR_NO_MORE_FILES THEN MESSAGE('Ошибка при получении списка каталогов'); RETURN END
END
LOOP W# = 1 TO RECORDS(UploadQuery)
GET(UploadQuery,W#)
Msg('Загружаем на сервер: ' & CLIP(UploadQuery.File))
Err# = FTPClient.Upload(CLIP(UploadQuery.FullFile),CLIP(UploadQuery.File))
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
DebugOut(Err# & ' Upload ' & CLIP(UploadQuery.FullFile))
IF Err# <> 0 THEN MESSAGE('Ошибка при загрузке на сервер'); RETURN END
END
!Msg('Получение списка каталогов')
Err# = FTPClient.GetDirectoryList(DirList)
DebugOut(Err# & ' GetDirectoryList 3')
IF Err# <> ERROR_NO_MORE_FILES THEN MESSAGE('Ошибка при получении списка каталогов'); RETURN END
DebugOut('----------------')
LOOP W# = 1 TO RECORDS(DirList)
GET(DirList,W#)
DebugOut(CLIP(DirList.Name) & ' ' & DirList.FileSize & ' ' & FORMAT(DirList.fFileDate[2],@D6.) & ' ' & FORMAT(DirList.fFileTime[2],@T4))
END
DebugOut('----------------')
Err# = FTPClient.Disconnect(TRUE)
DebugOut(Err# & ' Disconnect')
EE# += 1; ?Progress{PROP:Progress} = EE#; DISPLAY(?Progress)
IF Err# <> 0 THEN MESSAGE('Ошибка при отключении'); RETURN END
FREE(DirList)
- Вложения
-
- ftp.zip
- FTP
- (13.83 КБ) 207 скачиваний
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Как получить все файлы с ftp?
И еще просьба не дублить треды в разных подфорумах.alex789 писал(а):Есть задача
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса