Ruby Net::FTP Tutorial
Mar 29, 2009 - Comments
Recently, at Plexus, a client needed the ability to import photos to their site from a remote FTP server. Perfect opportunity for me to learn about Net::FTP. Turns out it was surprisingly simple.
Let's say we want to login to the server 'ftp.sample.com' with the username 'test' and the password 'pass', then switch to the directory 'source/files' and get the file 'photos.zip'. There are a couple ways to do this. First, we have to create and FTP connection with:
require 'net/ftp'
# Login to the FTP server
ftp = Net::FTP.new('ftp.sample.com', 'test', 'pass')
# OR
ftp = Net::FTP.new('ftp.sample.com')
ftp.login('test', 'pass')
# Switch to the desired directory
ftp.chdir('source/files')
# Get the file we need and save it to our 'ftp_photos' directory
ftp.getbinaryfile('photos_2009-03-29.zip', 'ftp_photos/photos.zip')
# We're done, so we need to close the connection
ftp.close
You can also accomplish the same thing by passing a block to the open method, like so:
require 'net/ftp'
Net::FTP.open('ftp.sample.com') do |ftp|
ftp.login('test', 'pass')
ftp.chdir('source/files')
ftp.getbinaryfile('photos_2009-03-29.zip', 'ftp_photos/photos.zip')
end
Pretty straightforward and simple.

