当前位置:网站首页>基于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;
}边栏推荐
- Teach you how to use uniapp to access chat and IM instant messaging - source code sharing
- [Unity Starter Plan] Making RubyAdventure02 - Handling Tile Maps & Collision
- 用于视觉语言导航的自监督三维语义表示学习
- Introduction to Power BI
- 程序发生run time error原因及解决方案
- Kubernetes-Basics-Common Commands
- A16z:为什么 NFT 创作者要选择 cc0?
- Superset 1.2.0 安装
- (1)通过FlinkSQL将数据写入mysql demo
- ‘xxxx‘ is declared but its value is never read.Vetur(6133)
猜你喜欢
随机推荐
JS Adder (DOM)
成员变量和局部变量的区别?
Groovy XML JSON
Dry goods: design high concurrency architecture from scratch
pytorch安装过程中出现torch.cuda.isavailable()=False问题
egg(二十):fs读取本地的txt文件
Kubernetes-Basics-Common Commands
分布式服务治理
小实验:实现一个用于计算(包括加减乘除)的小程序
[Unity Starter Plan] Making RubyAdventure02 - Handling Tile Maps & Collision
用于视觉语言导航的自监督三维语义表示学习
目前安全靠谱的国内期货开户流程?
国产数据库的红利还能“吃”多久?
IBM3650M4的ESXI主机报警“其他主机硬件对象的状态”
Mysql数据库入门学习笔记
Superset 1.2.0 installation
把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
手把手教你uniapp接入聊天IM即时通讯功能-源码分享
湖北钠斯网络数字藏品交易系统
抓住时代趋势,网赚新逻辑:平台+个人模式超清晰解读(附产品评测)









