2010-11-23 35 views
5

我需要連接到一個ftp站點並下載一組名爲D * .txt的文件(最多6個)。 你能幫我在Ruby中編碼嗎? 下面的代碼只是在ruby中下載多個FTP文件,如d * .txt

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

感謝

回答

7

最簡單的方法是遍歷文件的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 

希望這有助於。

+0

正確的。這就是FTP客戶端爲`mget`所做的事情。 – 2010-11-23 17:43:48

+0

感謝它的工作! – sada 2010-11-26 09:07:07

3

該解決方案對我無效,但它可能取決於FTP服務器。對我而言,ftp.list在Linux上返回類似於ls -l的結果。我用下面的正則表達式來獲得由列表中返回的第一個文件只是文件名:

ftp.list('D*.txt')[0][/.*(\d{2}):(\d{2})\s{1}(?<file>.+)$/,1] 
6

在目錄文件名的數組,你可以通過「nlst」的方法獲得:

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

files.each do |file| 
    puts file 
end 

#=> first.zip, second.zip, third.zip, ...