当前位置:网站首页>基于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;
}
}
}
边栏推荐
- Vim实用技巧_7.模式匹配和查找
- 相关性分析
- Gray Relevance Matrix——Application of MATLAB in Mathematical Modeling
- 7z解压软件(小巧好用)。百度云下载链接
- websocket协议详解与抓包分析
- [Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)
- Heap series _0x05: A diagram analyzes the connection between heap block allocation and FreeLists
- websocket协议详解
- 【翻译】制作DEB/debian包
- 【力扣】114. 二叉树展开为链表
猜你喜欢
随机推荐
缓存层与数据库层数据同步问题
GO 使用 Protobuf实用指南
Vim实用技巧_6.复制和粘贴原理(寄存器)
Unity Shader 透视效果/XRay
【SQL】595. 大的国家
Unity Shader零基础入门4:纹理贴图与法线贴图
Vim practical skills_3. Visual mode and command mode
hugging face tutorial - Chinese translation - share a model
PE format series _0x05: output table and relocation table (.reloc)
云模型和Logistic回归——MATLAB在数学建模中的应用(第2版)
客户端媒体引擎框架
面试经历(华为,瑞晟,大华,海康,虹软,顺丰)
2022.7.16学习总结
RTP/RTCP协议的FFmpeg demux源码解析
go使用Consul实用指南
Introduction to common commands in SQLMap
Analytic Hierarchy Process (AHP) - Applications of MATLAB in Mathematical Modeling (2nd Edition)
堆(heap)系列_0x03:堆块 + malloc/new底层 + LFH(WinDbg分析)
聚集索引和非聚集索引
输入不定长数组,输入一个字符串,既包含字符,又包含数字,输出数组,输入一个二维数组,字符和数字都可