如何使用FTP更改目录并复制文件?

时间:2014-04-30 20:15:55

标签: ruby-on-rails ruby csv ftp

此代码登录并尝试更改目录,然后列出目录中的文件:

Net::FTP.open(DOMAIN_NAME, LOGIN, PASSWORD) do |ftp|
  files = ftp.chdir("forms/")      
  puts files.list
end

运行时出现此错误:

undefined method `list' for nil:NilClass

该文件夹肯定存在。当我尝试使用cyberduck进行连接时,我看到了它,如果我做ftp.list

我做错了什么?

另外,我如何从FTP服务器下载CSV文件,然后打开它?

我试过阅读rubylang上的文档,我很困惑。如果有人能提供帮助那就太棒了!

1 个答案:

答案 0 :(得分:2)

chdir更改目录。如果你看一下基础资源,它就不会返回任何东西。

list返回文件列表:

  

返回目录中的文件信息数组(输出类似于ls -l)。如果给出了一个块,它将遍历列表。

因此files将为零,因为chdir没有返回任何内容。相反,你需要做类似的事情:

ftp.chdir('forms/')
files = ftp.list

查看Example #2 in the docs示例,忽略他们尝试分配chdir的结果。

如果你想要的只是名字列表,那么

nlist甚至会比list更好。如果您需要长文件列表,请使用list,以便您可以解析权限,大小等。