ruby 使用Ruby Net :: FTP库的示例代码。登录FTP服务器,列出文件,检查目录是否存在,上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 使用Ruby Net :: FTP库的示例代码。登录FTP服务器,列出文件,检查目录是否存在,上传文件相关的知识,希望对你有一定的参考价值。

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

以上是关于ruby 使用Ruby Net :: FTP库的示例代码。登录FTP服务器,列出文件,检查目录是否存在,上传文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Ruby构建FTP密码破解器

ruby 中使用 C++ .so 库的未解析符号

如何找出与 Ruby 一起打包的库的版本,例如json?

为啥使用 Ruby 的 DBM 库

Ruby RubyGems

Ruby RubyGems