当前位置:  开发笔记 > 编程语言 > 正文

使用HTTP代理进行FTP文件上载

如何解决《使用HTTP代理进行FTP文件上载》经验,为你挑选了3个好方法。

有没有办法在HTTP代理后面将文件上传到FTP服务器?

似乎使用.Net Webclient在HTTP代理后面不支持上传文件.(http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.proxy.aspx).

如果没有解决方法?如果没有,你知道我可以使用一个好的免费FTP库吗?

编辑:不幸的是,我没有任何FTP代理连接.



1> Alexander..:

在活动FTP模式下,服务器启动与客户端的数据连接.如果客户端在HTTP代理后面,这显然不起作用.在被动FTP模式下,客户端启动初始连接和数据连接.由于HTTP代理可以隧道传输任意传出TCP连接(使用CONNECT方法),因此应该可以通过HTTP代理以被动模式访问FTP服务器.

FtpWebRequest似乎支持被动模式.但是,我不明白为什么支持文件下载和目录列表,而文件上载也使用相同的数据连接.

你是否确认FtpWebRequest配置为被动模式不能通过HTTP代理工作,目录列表/文件下载工作正常?


这个缺点记载:"如果指定的代理是HTTP代理,只有DownloadFile,ListDirectory和ListDirectoryDe​​tails命令的支持." - http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest .proxy.aspx

2> Nic Wise..:

大多数FTP代理在连接上做他们的事情,所以如果你没有代理,你这样做:

服务器:myftpserver.com

用户:我

密码:密码

使用FTP代理,您可以:

服务器:ftpproxy.mydomain.com

用户:me@myftpserver.com

密码:密码

它只是从那里开始工作.通过squid代理,我正在使用这个正确的第二个(尝试调试某些东西).

...但是因为你没有FTP代理....

你有SOCKS代理吗?这可能会奏效,但我不知道.NET是否可以做到这一点.否则,说实话,我觉得你被卡住了!与HTTP相比,FTP是一种"奇怪的"协议,因为它有一个控制通道(端口21)和一个数据通道(或多个,在随机端口上),所以通过代理进入是有趣的.至少说!



3> Martin Vobr..:

我们的Rebex FTP/SSL可以使用HTTP代理.它不是免费的,但......

// initialize FTP client 
Ftp client = new Ftp();

// setup proxy details  
client.Proxy.ProxyType = FtpProxyType.HttpConnect;
client.Proxy.Host = proxyHostname;
client.Proxy.Port = proxyPort;

// add proxy username and password when needed 
client.Proxy.UserName = proxyUsername;
client.Proxy.Password = proxyPassword;

// connect, login 
client.Connect(hostname, port);
client.Login(username, password);

// do some work 
// ... 

// disconnect 
client.Disconnect();

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有