Mah*_*led 5 ruby ftp uri url-encoding
我正在尝试解析@在用户名和密码中包含一些特殊字符的 FTP URL :
username:p@sswrd@ftp.myhost.com/mypath
Run Code Online (Sandbox Code Playgroud)
当我尝试:
URI.parse(url)
Run Code Online (Sandbox Code Playgroud)
我得到:
URI::InvalidURIError: the scheme ftp does not accept registry part: username:p@sswrd@ftp.myhost.com (or bad hostname?)
然后,我尝试对 url 进行编码:
url = URI.encode(url, '@')
Run Code Online (Sandbox Code Playgroud)
但也有另一个错误:
URI::InvalidURIError: the scheme ftp does not accept registry part: username:p%40sswrd%40ftp.myhost.com (or bad hostname?)
最后,我尝试了另一种解决方案:
URI::FTP.build(:userinfo => 'username:p@sswrd', :host=>'ftp.myhost.com', :path => '/mypath')
Run Code Online (Sandbox Code Playgroud)
但我也遇到了一个错误:
URI::InvalidComponentError: 坏组件(预期的用户组件):p@ssword
我正在使用 ruby 1.8.7。
require 'net/ftp'
ftp=Net::FTP.new
ftp.connect("ftp.myhost.com",21)
ftp.login("username","p@sswd")
ftp.getbinaryfile("/mypath"){|data| puts data}
ftp.close
Run Code Online (Sandbox Code Playgroud)