Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于错误,Ruby net/ftp代码无法放置文件_Ruby_Ftp - Fatal编程技术网

由于错误,Ruby net/ftp代码无法放置文件

由于错误,Ruby net/ftp代码无法放置文件,ruby,ftp,Ruby,Ftp,我有一个失败的基本代码: ftpconfighash = open("#{RAILS_ROOT}/config/ftp.yml") {|f| YAML.load(f) } config = ftpconfighash[12345] ftp = Net::FTP::new(config["host"]) ftp.login(config["username"], config["password"]) dir += "/" unless config["dir"].blan

我有一个失败的基本代码:

  ftpconfighash = open("#{RAILS_ROOT}/config/ftp.yml") {|f| YAML.load(f) }
  config = ftpconfighash[12345]

  ftp = Net::FTP::new(config["host"])
  ftp.login(config["username"], config["password"])

  dir += "/" unless config["dir"].blank? or config["dir"].ends_with?("/")
  remotename = File.basename(filename)
  remotename = dir + remotename unless dir.blank?

  if File.binary?(filename)
    puts "PUTting binary file #{filename} to #{remotename}"
    ftp.putbinaryfile(filename, remotename)
  else
    puts "PUTting ASCII file #{filename} to #{remotename}"
    ftp.puttextfile(filename, remotename)
  end
  ftp.close
我已经验证了我可以通过ftp发送到服务器并手动放置文件。我还使用irb逐行遍历代码。我使用一个XML文件作为测试,所以失败的一行是“ftp.puttextfile”。以下是错误:

Net::FTPPermError: 500 Invalid PORT Command.
我不明白。我已经验证了我确实可以放这个文件,但我就是不能用这个代码

我将ftp.debug_mode设置为true,这是ftp.puttextfile命令的输出:

put: TYPE A
get: 200 Type set to A.
put: PORT 10,0,1,20,198,170
get: 500 Invalid PORT Command.
Net::FTPPermError: 500 Invalid PORT Command.

from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:243:in `getresp'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:251:in `voidresp'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:274:in `voidcmd'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:272:in `voidcmd'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:287:in `sendport'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:295:in `makeport'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:328:in `transfercmd'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:424:in `retrlines'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:422:in `retrlines'
from /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/net/ftp.rb:631:in `list'
from (irb):42
Ruby似乎正在尝试运行FTP服务器无法理解的命令:

PORT 10,0,1,20,198,170
是否有某种方法可以抑制该命令,或者我是否遗漏了其他内容?

尝试使用被动ftp:

ftp = Net::FTP::new(config["host"])
ftp.login(config["username"], config["password"])

ftp.passive = true
尝试使用被动ftp:

ftp = Net::FTP::new(config["host"])
ftp.login(config["username"], config["password"])

ftp.passive = true
我使用了这个gem“回形针存储ftp”,上传照片时出现了类似Net::FTPPermError 500的错误。那么你能告诉我在模型中应该把这一行ftp.passive=true放在哪里吗??你们也可以看到这一点,我使用了这个gem“回形针存储ftp”,上传照片时出现了类似Net::FTPPermError 500的错误。那么你能告诉我在模型中应该把这一行ftp.passive=true放在哪里吗??你也可以看到这个