Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用内置的Ruby Net::FTP类传输整个目录的内容?_Ruby_File_Io_Ftp_Transfer - Fatal编程技术网

是否可以使用内置的Ruby Net::FTP类传输整个目录的内容?

是否可以使用内置的Ruby Net::FTP类传输整个目录的内容?,ruby,file,io,ftp,transfer,Ruby,File,Io,Ftp,Transfer,我正在用Ruby构建一个应用程序,它有一个命令,可以将某个目录的内容传输到远程FTP服务器。我知道在Ruby中通过ftp传输单个文件的方法是: file = File.open('file.txt') Net::FTP.open(ftp_server, username, password) { |ftp| ftp.putbinaryfile(file) } 我只是不知道如何通过内置FTP类传输目录的内容。如果有人能给我举个例子,或者知道一个Ruby库可以做到这一点,我将不胜感

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

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

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

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

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

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

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

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一样。。把它隐藏起来。是的,这是必须的方式,就像你使用FTP客户端传输目录时它正在做的mkdir一样。。把它放在引擎盖下面。