使用Rails gem Net :: SFTP上传文件时出错:没有这样的文件

时间:2014-01-21 21:23:45

标签: ruby-on-rails ruby net-sftp

我正在尝试使用Net :: SFTP gem将文件上传到服务器。我的代码如下:

remote_path = "path/of/remote/file.txt"
local_path  = "path/to/local/file.txt"
Net::SFTP.start("SERVER", "USER", :password => "PASSWORD") do |sftp|
  sftp.upload!(local_path, remote_path)
end

当我执行此操作时,我得到:

Net::SFTP::StatusException (Net::SFTP::StatusException open path/of/remote/file.txt (2, "no such file"))

我认为问题是目录的整个remote_path还不存在。如果我给它一个存在的目录路径,它将创建目录。我希望上传也在路径中创建目录,如果它们还不存在的话。这确实是问题,如果是这样,我怎样才能用SFTP创建目录?

2 个答案:

答案 0 :(得分:2)

您必须先创建目录

  sftp.mkdir! "/path/to/directory"

答案 1 :(得分:2)

这里有一个小片段来检查dir是否存在,如果不存在则创建它:

if !sftp.dir.entries("root").map { |entry| entry.name }.include?("new_dir")
  sftp.mkdir("root/new_dir")
end