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