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.