Java代码如何实现使用FTP进行文件上传呢?

乔欣 Java经验 发布时间:2023-02-12 21:09:41 阅读数:17234 1

Java进行ftp上传的实现思路

ftp上传的实现思路:
     1.引入相应的jar包
	   commons-net-3.3.jar
	 2.生成一个FTPClient对象
	   使用ftpClient对象中的
	     storeFile方法,发送文件
例:
 
//FTP传输到数据库服务器
private boolean uploadServerByFtps(){
	boolean flag = true;
	//获取客户端数据文件路径
	String client_path = Pub.getPropertiesValue("ftpproperties", "ftpproperties.client.data.path");
	//获取数据库服务器上的存放数据文件路径
	String server_path = Pub.getPropertiesValue("ftpproperties", "ftpproperties.server.data.path");
	
	String hostname = Pub.getPropertiesValue("ftpproperties", "ftp.hostname");
	String ftpusername =  Pub.getPropertiesValue("ftpproperties", "ftp.username");
	String ftppwd = Pub.getPropertiesValue("ftpproperties", "ftp.pwd");
	int port = 21;
	logger.info("ftp server infor:hostname:"+hostname+" ftpusername:"+ftpusername+" ftppwd:"+ftppwd+" port:"+port);
	
	//遍历客户端数据文件路径下的txt文件,然后采用FTP上传
	File client_dir = new File(client_path);  
	if(!client_dir.exists()){
		logger.info("The file directory on the host you want to read does not exist");
		  return flag;
	}
	File client_files[] =  client_dir.listFiles();
	if(client_files.length == 0){
		logger.info("You want to read the file directory without any files");
		  return flag;
	}
	//开始遍历文件
	//创建ftp客户端
	FTPClient ftpClient = new FTPClient();
	ftpClient.setControlEncoding("GBK");
	for(int i=0;i<client_files.length;i++){ 
		String getfileName = client_files[i].getName();
		String getfileNamePath = client_files[i].getPath();
		//只对txt文件做处理
		if((getfileName.substring(getfileName.lastIndexOf(".")).trim().equals(".txt"))){
			//todo:增加控制文件(已经传输过的文件)的传输
			
			 try {
				//链接ftp服务器
				ftpClient.connect(hostname, port);
				//登录ftp
				ftpClient.login(ftpusername, ftppwd);
				int reply = ftpClient.getReplyCode();
				if (!FTPReply.isPositiveCompletion(reply)) {
					ftpClient.disconnect();
					logger.info("Returns a 530 password username error or the current user does not have permission to close the FTP connection");
					return false;
				}
				ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
				// ftpClient.makeDirectory("path");//在root目录下创建文件夹
				String server_file_name = server_path+ getfileName;
				logger.info("server_file_name>>>>>>: " + server_file_name);
				logger.info("getfileNamePath>>>>>>: " + getfileNamePath);
				
				//读取源文件流(客户端文件)
				InputStream client_fileInput = new FileInputStream(getfileNamePath);
				//传送到服务端
				ftpClient.storeFile(server_file_name, client_fileInput);//文件你若是不指定就会上传到root目录下
				client_fileInput.close();
				ftpClient.logout();
				logger.info("ftp is success");
			} catch (SocketException e) {
				// TODO Auto-generated catch block
				logger.info("port problem: "+e.toString());
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				logger.info("IO problem: "+e.toString());
				e.printStackTrace();
			} catch (Exception e) {
				logger.info("ftp problem: "+e.toString());
				e.printStackTrace();
			}finally {
				if (ftpClient.isConnected()) {
					try {
						ftpClient.disconnect();
					} catch (IOException ioe) {
						ioe.printStackTrace();
						logger.info("IO problem: "+ioe.toString());
					}
				}

			}
		}
	}
	
	return flag;
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16762074305766.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者