首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用具有特殊字符的用户名或密码解析FTP URL?

问如何使用具有特殊字符的用户名或密码解析FTP URL?
EN

Stack Overflow用户
提问于 2012-01-08 18:46:27
回答 4查看 2.1K关注 0票数 5

我正试图解析一个具有用户名和密码中一些特殊字符(如@ )的FTP URL:

代码语言:javascript
复制
username:p@sswrd@ftp.myhost.com/mypath

当我尝试:

代码语言:javascript
复制
URI.parse(url)

我得到:

URI::InvalidURIError:该方案ftp不接受注册表部分: username:p@sswrd@ftp.myhost.com (还是坏主机名?)

然后,我试图对网址进行编码:

代码语言:javascript
复制
url = URI.encode(url, '@')

但也有另一个错误:

URI::InvalidURIError:该方案ftp不接受注册表部分: username:p%40sswrd%40ftp.myhost.com (还是坏主机名?)

最后,我尝试了另一个解决方案:

代码语言:javascript
复制
URI::FTP.build(:userinfo => 'username:p@sswrd', :host=>'ftp.myhost.com', :path => '/mypath')

但我也犯了一个错误:

URI::InvalidComponentError:坏组件(预期用户组件):p@ssword

我用的是红宝石1.8.7。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-09 16:04:53

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-01-08 20:42:55

如果您的ftp服务器支持unicode:

代码语言:javascript
复制
URI::FTP.build(:userinfo => 'username:p%00%40sswrd', :host=>'ftp.myhost.com', :path => '/mypath')

应该行得通。正如this discussion所指出的。

但刚刚意识到你尝试了编码却失败了。抱歉的。

票数 0
EN

Stack Overflow用户

发布于 2012-07-16 14:14:57

在接收到以下错误时,我需要设置被动模式:

代码语言:javascript
复制
425 Could not open data connection to port XXXXX: Connection timed out

我是这样做的:

代码语言:javascript
复制
require 'net/ftp'
ftp = Net::FTP.new
ftp.passive = true
ftp.connect("ftp.myhost.com",21)
ftp.login("username","p@sswd")
ftp.getbinaryfile("/mypath"){|data| puts data}
ftp.close
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8780200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档