FTP(文件传输协议)是TCP/IP协议组中的协议之一,作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP协议的全称为File Transfer Protocol,FTP的目标是提高文件的共享性和可靠高效地传送数据。
作为一个文件传输协议,是一个客户端/服务器系统。它的任务就是从一台计算机将文件传送到另一台计算机。既然要在不同的电脑上高效的传输文件,就必须在两台电脑之间建立起联系,那我们可以让一台电脑充当服务器端,另一台电脑充当客户端,两者有着相同的网络端口名称,并且处在同一个局域网内。
FTP的组成部分:FTP客户端、FTP服务器(存储文件)默认使用TCP端口中的20(用于传输数据)和21(用于传输控制信息)两个端口。
FTP工作方式支持两种模式:
Standard( Port方式,主动方式)和Passive(PASV,被动方式)。
(1)Porl(主动方式)
客户端连接成功后,主动告诉服务器数据连接的端口。
(2)PASV(被动模式)
客户端连接成功后,在进行数据传输时临时连接服务器的20端口,利用20端口进行数据的传输。
在应用市场中有很多开启电脑服务器的应用程序,大家可以选择一个中意的,并且设置一个用户,方便客户端的连接,并设置用户权限。
(1)上传Excel文件至FTP服务器
- // 上传Excel文件至FTP服务器的uploadToFTP方法
- //传入表格的列头部分和数据部分
- public boolean uploadToFTP(Vector<String> colNameVector ,
- 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;
- }