支持代理的FTP操作
2011-04-06 08:44 flying团队 阅读(3700) 评论(0) 编辑 收藏 举报在JAVA的FTP开发中,一般采用APACHE或者SUN的FTP开发包,这里的问题在于均不支持代理FTP模式,在学校中,有的服务器确实可以上网,但是通过代理上的,这样,如果我们的程序发布到这台服务器上,就需要在程序上配置好,支持代理进行上网,这里采用了第三方的JAR包方式解决:
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.connectors.FTPProxyConnector;
import it.sauronsoftware.ftp4j.connectors.HTTPTunnelConnector;
import it.sauronsoftware.ftp4j.connectors.SOCKS4Connector;
import it.sauronsoftware.ftp4j.connectors.SOCKS5Connector;
import it.sauronsoftware.ftp4j.connectors.SSLConnector;
JAR包下载地址:http://www.sauronsoftware.it/projects/ftp4j/download.php
示例代码:
//上传文件到FTP上去 FTPClient ftp = new FTPClient(); try { //如果配置了代理服务器,那么使用代理的一些配置 if(ftp_proxy_ip.trim().length()>0) { //FTP代理连接器 if(ftp_proxy_type.equals("FTPProxyConnector")) { FTPProxyConnector type=new FTPProxyConnector(ftp_proxy_ip.trim(),ftp_proxy_port); ftp.setConnector(type); } else//SOCKET4代理连接器 if(ftp_proxy_type.equals("SOCKS4Connector")) { SOCKS4Connector type=new SOCKS4Connector(ftp_proxy_ip.trim(),ftp_proxy_port); ftp.setConnector(type); } else//SOCKET5代理连接器 if(ftp_proxy_type.equals("SOCKS5Connector")) { SOCKS5Connector type=new SOCKS5Connector(ftp_proxy_ip.trim(),ftp_proxy_port); ftp.setConnector(type); } else//http代理连接器 if(ftp_proxy_type.equals("HTTPTunnelConnector")) { HTTPTunnelConnector type=new HTTPTunnelConnector(ftp_proxy_ip.trim(),ftp_proxy_port); ftp.setConnector(type); } else//ssl代理连接器 if(ftp_proxy_type.equals("SSLConnector")) { SSLConnector type=new SSLConnector(); ftp.setConnector(type); } } //连接上FTP ftp.connect(ftp_ip, ftp_port); //自动选择(根据文件内容) ftp.setType(FTPClient.TYPE_AUTO); //登录FTP ftp.login(ftp_username, ftp_password); System.out.println("FTP登录成功!"); } catch(Exception err) { System.out.println("FTP登录失败!"); return; } //这个学校的FTP目录是否已存在,不存在就创建之 try { ftp.changeDirectory("/"+school_id+"/"); } catch(Exception err) { ftp.changeDirectory("/"); ftp.createDirectory(school_id); } try { ftp.changeDirectory("/"+school_id+"/"); //上传文档 File myfi=new File(TempDirectory+".zip"); ftp.upload(myfi); System.out.println("成功上传文件:"+myfi.getName()); } catch (Exception e) { System.out.println("error:"+e.toString()); } //登出 ftp.disconnect(true); System.out.println("结束FTP上传,成功退出!");
作者:黄海