Загрузите несколько файлов FTP, таких как d * .txt в ruby - PullRequest
6 голосов
/ 23 ноября 2010

Мне нужно подключиться к FTP-сайту и загрузить несколько файлов (максимум 6) с именем D * .txt. не могли бы вы помочь мне написать это в Ruby? Следующий код просто

ftp = Net::FTP::new("ftp_server_site")
ftp.login("user", "pwd")
ftp.chdir("/RemoteDir")
fileList= ftp.nlst
ftp.getbinaryfile(edi, edi)
ftp.close

Спасибо

Ответы [ 3 ]

7 голосов
/ 23 ноября 2010

Простейшим способом было бы перебрать список файлов в fileList.

Вот пример (не проверенный):

ftp = Net::FTP::new("ftp_server_site")
ftp.login("user", "pwd")
ftp.chdir("/RemoteDir")
fileList = ftp.list('D*.txt')
fileList.each do |file|
  ftp.gettextfile(file)
end
ftp.close

Надеюсь, это поможет.

6 голосов
/ 16 февраля 2013

Массив имен файлов в каталоге, который вы можете получить методом " nlst ":

files = ftp.nlst('*.zip')

files.each do |file|
  puts file
end

#=> first.zip, second.zip, third.zip, ...
3 голосов
/ 30 ноября 2011

Это решение не сработало для меня, хотя может зависеть от FTP-сервера. Для меня ftp.list возвращает результаты, подобные ls -l в Linux. Я использовал следующее регулярное выражение, чтобы получить только имя файла первого файла, возвращаемого списком:

ftp.list('D*.txt')[0][/.*(\d{2}):(\d{2})\s{1}(?<file>.+)$/,1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...