0

我正在尝试使用 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 创建目录?

4

2 回答 2

3

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

if !sftp.dir.entries("root").map { |entry| entry.name }.include?("new_dir")
  sftp.mkdir("root/new_dir")
end
于 2014-05-06T22:54:33.513 回答
3

您必须先创建目录

  sftp.mkdir! "/path/to/directory"
于 2014-01-21T23:35:11.317 回答