FTP - Multiple file downloads

I

Idealone Ideally

I have written ftp code which will download a single file from the
Server using the below code:

require 'rubygems'
require 'net/ftp'
require 'fileutils'

URL = 'IP address'
username = 'test'
passwd = "test"
filename = "file1"
directory = '/home/test/'
localfile = 'C:\\Documents and Settings\\User1\\Desktop\\file1'
ftp=Net::FTP.new
ftp.connect(URL,21)
ftp.login(username,passwd)
ftp.chdir(directory)
ftp.getbinaryfile(filename,localfile)
ftp.close

But what i am really looking for is:
1) Download multiple files from a given directory.
2) Download files by giving wild characters (eg: *.xls or *.txt)

Please let me know if there is a better way or easier way to achieve
these tasks.

cheers
 
M

Mark Thomas

I have written ftp code which will download a single file from the
Server using the below code:

require 'rubygems'
require 'net/ftp'
require 'fileutils'

URL = 'IP address'
username = 'test'
passwd = "test"
filename = "file1"
directory = '/home/test/'
localfile = 'C:\\Documents and Settings\\User1\\Desktop\\file1'
ftp=Net::FTP.new
ftp.connect(URL,21)
ftp.login(username,passwd)
ftp.chdir(directory)
ftp.getbinaryfile(filename,localfile)
ftp.close

But what i am really looking for is:
1) Download multiple files from a given directory.
2) Download files by giving wild characters (eg: *.xls or *.txt)

Please let me know if there is a better way or easier way to achieve
these tasks.

Not all that familiar with the library, but I do recall there is a
list method that accepts wildcards. Try something like this:

files = ftp.list('*.xls')
files.each do |filename|
ftp.getbinaryfile(filename, filename)
end

-- Mark
 
I

Idealone Ideally

Mark said:
Not all that familiar with the library, but I do recall there is a
list method that accepts wildcards. Try something like this:

files = ftp.list('*.xls')
files.each do |filename|
ftp.getbinaryfile(filename, filename)
end

-- Mark

I tried using the above code, i am getting some error:

NetBeans 6.5/ruby2/jruby-1.1.4/lib/ruby/1.8/net/ftp.rb:494:in `open': Is
a directory - Is a directory (Errno::EISDIR)
from C:/Program Files/NetBeans
6.5/ruby2/jruby-1.1.4/lib/ruby/1.8/net/ftp.rb:494:in `getbinaryfile'
from C:\user\workspace\qa\Cvis-ruby\lib\ftp_config.rb:25
from C:\user\workspace\qa\Cvis-ruby\lib\ftp_config.rb:24:in
`each'
from C:\user\workspace\qa\Cvis-ruby\lib\ftp_config.rb:24


-- cheers
 
M

Mark Thomas

What to do when you get an error:
1. Read the error message. It might have a clue as to what the problem
is.
2. Scan the backtrace for method names you may have called.
3. Analyze what situation might have caused the method(s) to throw the
error.
 
E

Enrique Meza

That's why,

files = ftp.list('*.xls')
p files

Returns an array of file information
 
M

Mark Thomas

No, The OP was trying to open a directory. This information was right
there in the error message. The next step would be for him to find out
why his listing included directories, and omit them.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,710
Latest member
bernietqt

Latest Threads

Top