基于FTP协议的Excel文件上传与下载

1.关于FTP协议

       FTP(文件传输协议)TCP/IP协议组中的协议之一,作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP协议的全称为File Transfer Protocol,FTP的目标是提高文件的共享性和可靠高效地传送数据。

2.FTP的工作模式

         作为一个文件传输协议,是一个客户端/服务器系统。它的任务就是从一台计算机将文件传送到另一台计算机。既然要在不同的电脑上高效的传输文件,就必须在两台电脑之间建立起联系,那我们可以让一台电脑充当服务器端,另一台电脑充当客户端,两者有着相同的网络端口名称,并且处在同一个局域网内。

          FTP的组成部分:FTP客户端、FTP服务器(存储文件)默认使用TCP端口中的20(用于传输数据)和21(用于传输控制信息)两个端口。

FTP工作方式支持两种模式

Standard( Port方式,主动方式)和Passive(PASV,被动方式)。

(1)Porl(主动方式)

             客户端连接成功后,主动告诉服务器数据连接的端口。

(2)PASV(被动模式)

              客户端连接成功后,在进行数据传输时临时连接服务器的20端口,利用20端口进行数据的传输。

         

3.具体的JAVA代码参考案例

      在应用市场中有很多开启电脑服务器的应用程序,大家可以选择一个中意的,并且设置一个用户,方便客户端的连接,并设置用户权限。

   (1)上传Excel文件至FTP服务器

// 上传Excel文件至FTP服务器的uploadToFTP方法
//传入表格的列头部分和数据部分
	public boolean uploadToFTP(Vector<String> colNameVector ,
			                   Vector<Vector<Object>> dataVector) {
								
		
		//生成一个临时的Excel文件
		File tempExcelFile = new File("D:\\AAAAA\\" + System.currentTimeMillis() +".xlsx");
		
		//将数据写入该Excel文件中
		exportExcel(colNameVector, dataVector, tempExcelFile);
		
		//上传
		FTPClient ftpclient = new FTPClient();
		try (FileInputStream in = new FileInputStream(tempExcelFile)) {
			//服务器的IP地址,网络接口和登录账号密码
			ftpclient.connect("***.***.***..***",21);
 			boolean isLogin = ftpclient.login("admin", "admin");
         //提示登录成功
			System.out.println("登陆成功:" + isLogin);
			ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
			ftpclient.storeFile(tempExcelFile.getName(), in);
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}finally {
			try {
				ftpclient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}
		}
		return true;
	}

(2)实现FTP的下载功能的downloadFileFromFTP方法:

public boolean downloadFileFromFTP(String excelFiles) {
		
		File uploadDir = new File("D:\\games");
		
		if(!uploadDir.exists()) {
			uploadDir.mkdir();
		}
		FTPClient ftpclient = new FTPClient();
		try (FileOutputStream out = new FileOutputStream("D:\\FilesDownLoad\\" + excelFiles)) {
			ftpclient.connect("***.***.***..***",21);
			boolean isLogin = ftpclient.login("admin", "admin");
			System.out.println("登陆成功:" + isLogin);
			
			ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
			boolean isretrieve = ftpclient.retrieveFile(excelFiles, out);
			return isretrieve;
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				ftpclient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}
		}
		return false;
	}

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#0000FF格子衫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值