Ruby on rails `调度请求';:Net::SFTP.upload期间没有此类请求
我正在使用Net::SFTP将文件上载到服务器。代码如下:Ruby on rails `调度请求';:Net::SFTP.upload期间没有此类请求,ruby-on-rails,ruby,sftp,net-sftp,Ruby On Rails,Ruby,Sftp,Net Sftp,我正在使用Net::SFTP将文件上载到服务器。代码如下: uri = URI.parse('sftp://host.org') io = StringIO.new(csv_string) timeout 120 do Net::SFTP.start(uri.host,ENV['SFTP_USER'],:password=>ENV['SFTP_PASS'],:port=>22) do |sftp| sftp.upload(io, "/ftpguest/Medstro/"
uri = URI.parse('sftp://host.org')
io = StringIO.new(csv_string)
timeout 120 do
Net::SFTP.start(uri.host,ENV['SFTP_USER'],:password=>ENV['SFTP_PASS'],:port=>22) do |sftp|
sftp.upload(io, "/ftpguest/Medstro/" + file_name)
end
end
当我运行代码时,它成功地连接到主机并上载一个具有正确文件名的零字节文件。然后抛出以下异常:
lib/ruby/gems/2.3.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:947:in `dispatch_request': no such request `403046400' (Net::SFTP::Exception)
文件内容没有上传,我只是得到一个零字节的文件。我在谷歌上找不到任何东西。有人知道如何解决这个问题吗
仅供参考,我可以使用WinSCP很好地上传文件。将net ssh gem更新为4.0.1版解决了此问题。今天遇到了此问题。请确保指定服务器使用的sftp版本。您可以在sftp服务器的外壳上运行
version
,以了解:
sftp> version
SFTP protocol version 3
然后将其传递给Net::SFTP#start
,如下所示:
Net::SFTP.start(host, user, { password: password, port: port }, { version: version })