在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上传,成功退出!");
作者:黄海