使用Ruby将文件从本地目录上载到SFTP

使用Ruby将文件从本地目录上载到SFTP,ruby,Ruby,出于某种原因,Ruby中的SFTP上载(将文件从本地目录复制到SFTP服务器)似乎无法工作。我目前正在使用Ruby 2.5.3。如果您有任何想法,我将不胜感激: 我的代码如下: require 'net/ssh' require 'net/sftp' server = 'sftp.secure.net' username = '123456' password = "Mypassword*" uid = '123456' files = Dir.entries(outdir) Net::SF

出于某种原因,Ruby中的SFTP上载(将文件从本地目录复制到SFTP服务器)似乎无法工作。我目前正在使用Ruby 2.5.3。如果您有任何想法,我将不胜感激:

我的代码如下:

require 'net/ssh'
require 'net/sftp'

server = 'sftp.secure.net'
username = '123456'
password = "Mypassword*"
uid = '123456'

files = Dir.entries(outdir)
Net::SFTP.start(server, username, :password=>password) do |sftp|
  for filename in files
     #puts files
      puts "Browsing files..." 
      puts "File: #{filename}" 
     #puts new_filename

####### replacing , for | ########

     if /#{uid}_test_[0-9]{8}_[0-9]{8}.txt$/ =~ filename
     file = "#{outdir}\\#{filename}"
     puts "SFTPing #{file}"
     sftp.upload(file) 
     puts "SFTP Complete for file #{file}"
     puts "Cleanup"
     puts "Deleting #{file}."
     File.delete(file)
     puts "Files were deleted." 
     end
  end
puts "Closing SFTP connection..." 
sftp.close
puts "SFTP connection closed."
end

谢谢你,肯尼科!那个上传!这肯定很有帮助。此外,应删除sftp的sftp.close()。SFTP连接将自动关闭。我发现FTP需要这个,但SFTP不需要

谢谢

定稿:

files = Dir.entries(outdir)
Net::SFTP.start(hostname, username, :password=>password) do |sftp|
for filename in files
     #puts files
      puts "Browsing files..." 
      puts "File: #{filename}" 
     #puts new_filename

####### replacing , for | ########

     if /#{uid}_test_[0-9]{8}_[0-9]{8}.txt$/ =~ filename
     file = "#{outdir}\\#{filename}"
     puts "SFTPing #{file}"
     sftp.upload!(file) 
     puts "SFTP Complete for file #{file}"
     puts "Cleanup"
     puts "Deleting #{file}."
     File.delete(file)
     puts "Files were deleted." 
     end
end
#puts "Closing SFTP connection..." 
#sftp.close()
puts "SFTP connection closed."
end

如果不知道您使用的是什么宝石,以及您遇到的错误,那么很难提供帮助。但是假设您使用的是
upload
似乎不是一个定义的函数,您需要使用
upload