支持代理的FTP操作

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

转载于:https://www.cnblogs.com/dsideal/archive/2011/04/06/2006320.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值