当前位置:网站首页>基于FTP协议的Excel文件上传与下载
基于FTP协议的Excel文件上传与下载
2022-08-08 15:53:00 【#0000FF格子衫】
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;
}
边栏推荐
猜你喜欢
分布式服务治理
程序发生run time error原因及解决方案
Dry goods: design high concurrency architecture from scratch
The origin and creation of Smobiler's complex controls
跟我一起来学弹性云服务器ECS【华为云至简致远】
保险,一生必备
【有奖征文 第13期】至简致远,“云”响世界,大胆秀出你的华为云技术主张,高额激励等你拿
vs2只运行项目中的一个文件
Tungsten Fabric SDN — OpenStack 与 Kubernetes 异构集群统一 SDN 方案
Superset 1.2.0 安装
随机推荐
sql合并连续时间段内,某字段相同的行。
线程本地存储 ThreadLocal
Jingdong T9 pure hand type 688 pages of god notes, SSM framework integrates Redis to build efficient Internet applications
Synergistic authors open source throttling, 2022 trend of technology foresight (asynchronous programming/container technology)
如何使用 Eolink 实现 API 文档自动生成
JS Adder (DOM)
返回分页查询分类并统计多对多关系表中各分类下的应用数量
Take you to play with the "Super Cup" ECS features and experiment on the pit [HUAWEI CLOUD is simple and far]
10分钟快速入门RDS【华为云至简致远】
国泰君安证券新手开户、有安全保障吗?
web-sql注入
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
【MATLAB项目实战】基于Morlet小波变换的滚动轴承故障特征提取研究
Flutter的实现原理初探
firewall高级配置
CS231n:6 训练神经网络(三)
First online!Messaging middleware fairy notes, covering the essence of Alibaba's ten years of technology
2022年8月中国数据库排行榜:openGauss重夺榜眼,PolarDB反超人大金仓
彻底理解 volatile 关键字及应用场景,面试必问,小白都能看懂!
带你玩转“超大杯”ECS特性及实验踩坑【华为云至简致远】