Как получить все файлы с ftp?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
alex789
Новичок
Сообщения: 12
Зарегистрирован: 15 Март 2009, 11:46

Как получить все файлы с ftp?

Сообщение alex789 »

Есть задача - необходимо получить список файлов, упрощенно скачать все файлы, которые есть в папке на ftp. Среда Clarion 6.3 стандартные шаблоны. Может есть какое внешнее бесплатное приложение, которое это может делать? Для работы с ftp пользуем ncftpget и ncftpput, но, кажется, эти проги не умеют давать список. В идеале хотелось-бы получить список файлов в txt-файл. Дальше его уже считаю и последовательно получу все файлы.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Как получить все файлы с ftp?

Сообщение Игорь Столяров »

Мы для этих целей используем библиотеку Catalyst SocketTools (есть FTP форума).
В ней все это и многое другое по работе с FTP есть. Минус - это не бесплатная библиотека ...
Make Clarion Great Again ! 😎
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Как получить все файлы с ftp?

Сообщение Admin »

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?

Сообщение Admin »

alex789 писал(а):Есть задача
И еще просьба не дублить треды в разных подфорумах.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить