【问题标题】:Is it possible to transfer the contents of a whole directory using the built in Ruby Net::FTP class?是否可以使用内置的 Ruby Net::FTP 类传输整个目录的内容?
【发布时间】:2013-06-02 23:12:18
【问题描述】:

我正在用 Ruby 构建一个应用程序,它有一个命令可以将某个目录的内容传输到远程 FTP 服务器。我知道在Ruby中通过ftp传输单个文件的方式是:

file = File.open('file.txt')
    Net::FTP.open(ftp_server, username, password) { |ftp|
    ftp.putbinaryfile(file)
}

我只是不知道如何通过 FTP 类的构建来传输目录的内容。如果有人能给我一个如何做到这一点的例子,或者知道可以做到这一点的 Ruby 库,那将不胜感激。

【问题讨论】:

    标签: ruby file io ftp transfer


    【解决方案1】:

    首先,获取你目录下的所有文件和子目录:

    entries = Dir.glob('my_dir/**/*').sort
    

    (需要sort 以确保每个目录都在其文件之前)

    现在您可以上传所有文件并创建所有子目录:

    Net::FTP.open(ftp_server, username, password) do |ftp|
      entries.each do |name|
        if File::directory? name
          ftp.mkdir name
        else
          File.open(name) { |file| ftp.putbinaryfile(file, name) }
        end
      end
    end
    

    我没有时间测试这个,所以我可能会错过一些东西。

    【讨论】:

    • 是的,当您使用 FTP 客户端传输它正在执行 mkdir 的目录时,这就是必须完成的方式.. put put put under the hood.
    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2010-10-28
    • 2015-06-21
    • 2012-10-30
    • 2012-05-21
    相关资源
    最近更新 更多