当前位置:网站首页>基于FTP协议的文件上传与下载
基于FTP协议的文件上传与下载
2022-08-09 15:01:00 【鸣筝鸣筝】
目录
简介
FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。虽然现在通过HTTP协议下载的站点有很多,但是由于FTP协议可以很好地控制用户数量和宽带的分配,快速方便地上传、下载文件,因此FTP已成为网络中文件上传和下载的首选服务器。同时,它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务的功能是实现完整文件的异地传输。特点如下:
(一)FTP使用两个平行连接:控制连接和数据连接。控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。数据连接只用于传送数据。
(二)在一个会话期间,FTP服务器必须维持用户状态,也就是说,和某一个用户的控制连接不能断开。另外,当用户在目录树中活动时,服务器必须追踪用户的当前目录,这样,FTP就限制了并发用户数量。
(三)FTP支持文件沿任意方向传输。当用户与一远程计算机建立连接后,用户可以获得一个远程文件也可以将一本地文件传输至远程机器。
FTP服务器的配置
先添加一个用户,并且设置登录密码和账号以及此用户的访问权限

创建好之后就可以看到这个界面,证明服务器已开启:
要想在程序中与FTP服务器建立连接,要先导入所需的JAR文件
![]()
基于FTP服务器的上传操作
1、创建FTP客户端对象:
FTPClient ftpClient=new FTPClient();
2、创建本地文件输入流,用来存储上传的文件:
FileInputStream in=new FileInputStream(tempExcelFile);
3.与FTP建立连接
ftpClient.connect("192.168.254.189",21);
4.登录FTP服务器
boolean bol=ftpClient.login("###", "###");
5.ftpClient.changeWorkingDirectory("hwh");
6.设置文件类型:
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.将文件上传至FTP服务器:
ftpClient.storeFile(tempExcelFile.getName(), in);
代码实现:
//上传
public boolean uploadToFTP(Vector<String> colNameVector,Vector<Vector<Object>> dataVector) {
//1.生成一个临时文件
File tempExcelFile=new File("D:\\TXT\\"+System.currentTimeMillis()+".xlsx");
//2.将数据写入该Excel文件中(临时在本地进行存储)
exportExcel(colNameVector, dataVector, tempExcelFile);
//3.上传
FTPClient ftpClient=new FTPClient();
try (FileInputStream in=new FileInputStream(tempExcelFile);){
ftpClient.connect("172.20.10.11",21);
boolean bol=ftpClient.login("admin", "admin");
System.out.println("登陆成功?"+bol);
//设置文件上传类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//将本地文件上传至FTP服务器
ftpClient.storeFile(tempExcelFile.getName(), in);
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (SocketException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
//删除临时文件
tempExcelFile.delete();
return true;
}基于FTP服务器的下载操作
1、创建FTP客户端对象:
FTPClient ftpClient=new FTPClient();
2、创建本地文件输出流,用来存储(写入)下载的文件:
FileInoutStream out=new FileoutputStream(upLoad);
3.与FTP建立连接
ftpClient.connect("192.168.254.189",21);
4.登录FTP服务器
boolean bol=ftpClient.login("###", "###");
5.切换目录
ftpClient.changeWorkingDirectory("dir01");
6.设置文件类型:
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.从FTP服务器中下载指定文件:
boolean isretrieve=ftpClient.retrieveFile(excelFileName, out);
return isretrieve;
代码实现:
public boolean downLoadFileToFTP(String excelFileName, File upLoad) {
// if(!upLoad.exists()) {
// upLoad.mkdir();
// }
//创建FTP客户端对象
FTPClient ftpClient=new FTPClient();
try (FileOutputStream out=new FileOutputStream(upLoad);){
//FTP连接
ftpClient.connect("172.20.10.11",21);
//登录
boolean isLogin=ftpClient.login("admin", "admin");
System.out.println("登陆成功?"+isLogin);
//设置文件下载类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//从FTP服务器中下载指定文件
boolean isretrieve=ftpClient.retrieveFile(excelFileName, out);
return isretrieve;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (SocketException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
边栏推荐
猜你喜欢

Heap series _0x05: A diagram analyzes the connection between heap block allocation and FreeLists

软件安全内存区域详解

Vim实用技巧_8.替换(substitute)和global命令

Excel绘制统计图

模糊综合评价

The practical skills Vim _1. Vim way of solving problems

Word 2016 撰写论文(1): 公式居中、编号右对齐

【力扣】114. 二叉树展开为链表

Virtualbox 设置共享文件夹

Detailed Explanation of Software Secure Memory Area
随机推荐
Basic Terms of Machine Learning
服务端媒体引擎框架
Detailed Explanation of Software Secure Memory Area
【力扣】617. 合并二叉树
【剑指 Offer】 37. 序列化二叉树
Vim实用技巧_2.普通模式和插入模式
go语言基础学习(一起学习go语言)
【力扣】1154. 一年中的第几天
CTF在线加解密以及常用工具
缓存层与数据库层数据同步问题
【力扣】1995. 统计特殊四元组
机器学习的基本术语
websocket协议详解与抓包分析
基于X264的动态帧率与动态码率调整的实现
hugging face tutorial - Chinese translation - tokenizers using Tokenizers
Unity Shader零基础入门4:纹理贴图与法线贴图
gccg++基本命令简介
Data Fitting Methods Application of MATLAB in Mathematical Modeling (Second Edition)
libev库解剖(1)
Introduction to common commands in SQLMap