当前位置:网站首页>基于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 _0x02: The past and present of the heap (WinDbg+Visual Studio compilation)

Vim practical skills_3. Visual mode and command mode

Vim实用技巧_7.模式匹配和查找

CRM定制开发需要多少钱 CRM系统定制开发价格

TOPSIS优劣解距离法

godot编写一个节点实时属性显示系统

将类指针强制转换为void*指针进行传参的使用方法

配置 vscode 让它变得更好用

如何通过Photoshop根据纹理贴图轻松获得法线贴图

堆(heap)系列_0x0A:3种方法一次性解决堆溢出问题
随机推荐
hugging face tutorial - Chinese translation - fine-tuning a pre-trained model
将类指针强制转换为void*指针进行传参的使用方法
【翻译】制作DEB/debian包
Vim实用技巧_2.普通模式和插入模式
缓存层与数据库层数据同步问题
Altera FPGA 储存单元IP核之RAM、FIFO
Postgraduate Work Weekly (Week 4)
websocket协议详解与抓包分析
Virtualbox 设置共享文件夹
【力扣】1995. 统计特殊四元组
灰色预测及其MATLAB实现——MATLAB在数学建模中的应用
类定义中class和className中间的修饰词的作用有关问题
【力扣】11. 盛最多水的容器
SVM Support Vector Machine - Application of MATLAB in Mathematical Modeling
godot编写一个节点实时属性显示系统
7z解压软件(小巧好用)。百度云下载链接
Hold face (hugging face) tutorial - Chinese translation - create a custom framework
Janus介绍
堆(heap)系列_0x02:堆的前世今生(WinDbg+Visual Studio汇编)
交叉编译 OpenSSL