当前位置:网站首页>基于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;
}边栏推荐
猜你喜欢

pytorch安装过程中出现torch.cuda.isavailable()=False问题

携手数字创新 共筑国产生态 7月份AntDB与5款产品完成互认证

redis的详细介绍与操作命令

光弘科技:公司在印度为小米、三星、OPPO、诺基亚提供智能手机等产品的制造服务

Share these new Blender plugins that designers must not miss in 2022

腾讯又一长达 8 年的服务下架。。。

Flutter的实现原理初探

【有奖征文 第13期】至简致远,“云”响世界,大胆秀出你的华为云技术主张,高额激励等你拿

【Unity入门计划】用双血条方法控制伤害区域减血速度

Smobiler的复杂控件的由来与创造
随机推荐
18、学习MySQL ALTER命令
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
Groovy XML JSON
Mysql的分布式事务原理理解
IBM3650M4的ESXI主机报警“其他主机硬件对象的状态”
深度学习-神经网络原理1
消除游戏中宝石下落的原理和实现
Notes on the development of kindergarten enrollment registration system based on WeChat applet
基于微信小程序的幼儿园招生报名系统开发笔记
Power BI简介
抓住时代趋势,网赚新逻辑:平台+个人模式超清晰解读(附产品评测)
C#/VB.NET convert PDF to PDF/X-1a:2001
小实验:实现一个用于计算(包括加减乘除)的小程序
在通达信开户安全不呢
sqllabs 1~6通关详解
[Online interviewer] How to achieve deduplication and idempotency
Thoroughly understand the volatile keyword and application scenarios, and it is a must for interviews, and Xiaobai can understand it!
软考 --- 软件工程(6)软项目管理
Jingdong T9 pure hand type 688 pages of god notes, SSM framework integrates Redis to build efficient Internet applications
First online!Messaging middleware fairy notes, covering the essence of Alibaba's ten years of technology