当前位置:网站首页>基于FTP协议的文件上传与下载
基于FTP协议的文件上传与下载
2022-08-08 06:27:00 【卡多希y】
FTP协议全称叫做文件传输协议,它用于在Internet上的控制文件的双向传输。在FTP的使用当中,经常会提到两个概念,“下载”和“上传”。下载文件就是从远程主机拷贝文件到自己的计算机中;上传就是从自己的计算机中拷贝到远程计算机,本篇文章将客户端和服务器同时使用一台主机进行操作。
使用FTP时,必须先登录,在FTP服务器上获得相应的权限后,才能进行上传和下载文件。也就是说,要想同哪一台 计算机传送文件,就必须具有哪一台计算机的适当授权。TCP/IP协议中,FTP标准命令TCP 端口号为21,Port方式数据端口为20。FTP的任务是从一台计算机将文件传送到另一台计算机,不受 操作系统的限制。
在进行使用FTP服务器来进行文件传输前,要先对FTP服务器的IP地址,端口,以及用户的权限进行设置。以我目前设置为例进行下边的操作。
在通过Java来进行连接FTP服务器之前先准备好相应的jar包(配置过maven中央仓库请忽略)
commons-net-3.6.jar下载地址:Central Repository: commons-net/commons-net/3.6
一、上传文件至FTP服务
(1)创建FTP客户端对象
FTPClient ftpClient = new FTPClient();
(2) 连接FTP服务器
// 传入我们的IP地址以及服务器端口号
ftpClient.connect("192.168.137.1", 21);
(3)登录FTP服务器
// 输入我们在FTP服务器中配置好的用户名和密码
ftpClient.login("admin", "admin");
(4)为确保我们的文件能够上传成功,我们在FTP服务器中切换上传目录
if (!ftpClient.changeWorkingDirectory("upload")) {
// 创建目录
ftpClient.makeDirectory("upload");
// 切换
ftpClient.changeWorkingDirectory("upload");
}
(5)设置文件类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
(6)上传文件
// 要上传的文件
File tempExcelFile = new File("D:\\IOTest\\tempFile\\data.xlsx");
// 通过输入流包装
FileInputStream in = new FileInputStream(tempExcelFile)
// 使用storeFIle方法上传
ftpClient.storeFile(tempExcelFile.getName(), in);
最终我们可以看到在FTP服务器设置的文件夹内可以查看到刚才上传的文件
二、从FTP服务器上下载文件
下载和上传类似,同样的是先进行连接、登录、设置文件类型,最后下载
具体代码实现如下:
// 创建FTP客户端对象
FTPClient ftpClient = new FTPClient();
// 连接FTP服务器
ftpClient.connect("192.168.137.1", 21);
// 登录FTP服务器
ftpClient.login("admin", "admin");
// 设置文件类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 设置要下载的文件名称
String fileName = "java.jpg";
// 创建输出流,传入要下载的位置
FileOutputStream out = new FileOutputStream("D:\\IOTest\\load\\" + 13 + ".jpg");
// 下载(调用retrieveFile()方法实现下载)
ftpClient.retrieveFile(fileName, out);
最终,我们能看到文件已经成功的下载到本地了
边栏推荐
- Nine common interfaces for implementing sequence table in C language
- The addition, deletion and modification of the leading doubly circular linked list
- Unity object color gradient effect (judgment logic implementation)
- Unity学习笔记 01 —— 常用API
- Background Suppression Network for Weakly-supervised Temporal Action Localization
- Mysql大并发热点行更新的两个骚操作
- 【图形学】16 光照模型(一、理论与公式)
- 【数据序列化】扁平结构与嵌套结构
- How to get all child objects under an object in Unity
- Math工具类的ceil()、floor()、round()方法源码阅读
猜你喜欢
随机推荐
tcpdump进行DNS抓包
[Unity] GPU动画实现(四)——生成动画数据
【图形学】09 UnityShader入门(一)
基于xml实现简单的对象自动创建和依赖注入
每日一题Day2
Unity_预制体批量编辑器
【图形学】05 渲染管线基础
[Unity] GPU动画实现(三)——材质合并
网络安全笔记第二天day2(等级保护)
【图形学】13 UnityShader语义(一)
Math工具类的ceil()、floor()、round()方法源码阅读
[Unity] 自定义日志系统 解决Unity Log的痛点
Next主题美化
Kubernetes | 01.Kubenetes简介
[Unity] GPU动画实现(五)——渲染GPU动画
Gym 101492E Teamwork 伪dp解法
Leetcode topic sharing and explanation
C language judges the problem of big and small endian storage
关于在finally代码块中修改try代码块中基本数据类型返回值的问题
【图形学】四元数(二)