Skip to content

Instantly share code, notes, and snippets.

@gbalbuena
Forked from 3dd13/ruby_ftp_example.rb
Last active August 29, 2015 14:07
Show Gist options
  • Save gbalbuena/423f17b5e83175a2cb6f to your computer and use it in GitHub Desktop.
Save gbalbuena/423f17b5e83175a2cb6f to your computer and use it in GitHub Desktop.

Revisions

  1. @3dd13 3dd13 created this gist Nov 5, 2011.
    47 changes: 47 additions & 0 deletions ruby_ftp_example.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    require 'net/ftp'

    CONTENT_SERVER_DOMAIN_NAME = "one-of-the-ftp-server.thought-sauce.com.hk"
    CONTENT_SERVER_FTP_LOGIN = "saucy-ftp-server-login"
    CONTENT_SERVER_FTP_PASSWORD = "saucy-ftp-server-password"


    # LOGIN and LIST available files at default home directory
    Net::FTP.open(CONTENT_SERVER_DOMAIN_NAME, CONTENT_SERVER_FTP_LOGIN, CONTENT_SERVER_FTP_PASSWORD) do |ftp|
    files = ftp.list

    puts "list out files in root directory:"
    puts files
    end


    # check if the directory existence
    # create the directory if it does not exist yet
    Net::FTP.open(CONTENT_SERVER_DOMAIN_NAME, CONTENT_SERVER_FTP_LOGIN, CONTENT_SERVER_FTP_PASSWORD) do |ftp|
    ftp.mkdir("/root_level") if !ftp.list("/").any?{|dir| dir.match(/\sroot_level$/)}

    # create nested directory
    # it does not create directory tree
    # therefore, create "/root_level" before creating "/root_level/nested"
    ipad_folder = ftp.list("/root_level")
    ftp.mkdir("/root_level/nested") if !ipad_folder.any?{|dir| dir.match(/\snested$/)}
    end


    # upload files
    TXT_FILE_OBJECT = File.new("/home/though-sauce/to_be_uploaded/0001.txt")
    Net::FTP.open(CONTENT_SERVER_DOMAIN_NAME, CONTENT_SERVER_FTP_LOGIN, CONTENT_SERVER_FTP_PASSWORD) do |ftp|
    ftp.putbinaryfile(TXT_FILE_OBJECT)
    end


    # upload files and rename it
    Net::FTP.open(CONTENT_SERVER_DOMAIN_NAME, CONTENT_SERVER_FTP_LOGIN, CONTENT_SERVER_FTP_PASSWORD) do |ftp|
    ftp.putbinaryfile(TXT_FILE_OBJECT, "0001.txt.in_process")
    end


    # upload files to nested directory
    Net::FTP.open(CONTENT_SERVER_DOMAIN_NAME, CONTENT_SERVER_FTP_LOGIN, CONTENT_SERVER_FTP_PASSWORD) do |ftp|
    ftp.putbinaryfile(TXT_FILE_OBJECT, "/root_level/nested/#{File.basename(TXT_FILE_OBJECT)}")
    end