基于FTP协议实现文件上传与下载

article/2025/8/18 14:48:41

目录

一、FTP简介

二、关于FTP服务器

三、文件上传

分步讲解:

完整实现代码:

四、下载文件

分步讲解:

完整实现代码:

小结


一、FTP简介

FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。支持FTP协议的服务器就是FTP服务器。

与大多数 Internet服务一样,FTP也是一个 客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

二、关于FTP服务器

下载并安装easyftp_sever,打开即可启用ftp服务器

首先添加用户,设置用户名称,登录密码及访问权限等来约束客户端的连接

出现以下界面则表示服务器已开启,主机ip即服务器ip,一般通用的ftp端口为21,web端口为8080

三、文件上传

        要想实现文件上传,首先需要与ftp服务器建立连接,例如要想在eclipse中通过代码与服务器实现连接,则需要项目工程中导入相关jar包,完成相关配置

分步讲解:

1. 首先创建ftpClient对象:

 2. 连接至ftp服务器并登录

       通过 connect()方法连接服务器,要知道的是,这个方法中参数一是ftp服务器的IP地址,参数二是ftp服务器的端口号

       通过 login()方法登录服务器,这里的参数传入服务器中添加的用户名和密码

 3. 接下来就是设置上传保存至服务器的文件名,例如将文件名设置为“xyr”

        下面代码中,首先定义了切换路径(changeWorkinDirectory()方法)的返回值,通过判断返回值为true或false来判断指定文件是否存在,如果不存在,则先创建指定名称的文件文件夹(makeDirectory()方法),再进入文件夹,用于后面保存想要上传的内容

 4. 在存储前还需要设置文件的类型,通过setFileType()方法设置(否则可能会出现上传乱码的现象)

 5. 创建文件输入流用于读取想要上传的本地文件

        这里因为输入流本身使用完应该关闭,所以直接将它写在了try块里

 6. 最后就是使用 storeFile()方法 将本地文件上传至ftp服务器

完整实现代码:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.SocketException;import org.apache.commons.net.ftp.FTPClient;public class FtpTest {public static void main(String[] args) {// 创建ftpClient对象FTPClient ftpClient = new FTPClient();// 创建输入流用于读取本地图片try (FileInputStream localIn = new FileInputStream("C:\\text Java\\doubanPic\\m.webp")) {// 链接服务器ftpClient.connect("192.168.254.185", 21);// 登录ftpClient.login("admin", "admin");// 切换至指定文件boolean isChange = ftpClient.changeWorkingDirectory("xyr");System.out.println(isChange);if(!isChange) {ftpClient.makeDirectory("xyr");isChange =ftpClient.changeWorkingDirectory("xyr");}System.out.println(isChange);// 存储前设置文件类型ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);// 存储文件(将本地文件上传至服务器)// 参数一:ftp服务器存储文件的位置(目录+文件名)// 参数二:从本地获取文件的输入流ftpClient.storeFile("xu.jpg", localIn);} catch (SocketException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}
}

四、下载文件

分步讲解:

1. 与上传文件相同,首先要创建ftpClient对象

 2. 连接并登录FTP服务器

 3. 与上传文件相同,接下来该 指定下载文件下载前更改格式

 4. 创建文件输出流,用于将从ftp服务器下载的文件写入到本地

        下面我顺便设置了保存至本地的文件名称

 5. 使用 retrieveFile()方法从ftp服务器下载文件

完整实现代码:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;import org.apache.commons.net.ftp.FTPClient;public class Download {public static void main(String[] args) {FTPClient ftpClient = new FTPClient();String downLoadName = "m.webp";try (FileOutputStream out = new FileOutputStream("D:\\ftpTest\\xyr\\" + downLoadName)) {ftpClient.connect("192.168.254.146", 21);ftpClient.login("root", "root");ftpClient.changeWorkingDirectory("ftpTest");ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);ftpClient.retrieveFile(downLoadName,out);} catch (SocketException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}
}

小结

        以上便是基于ftp的文件上传与下载的代码实现过程,不难看出只有拥有了FTP服务器,客户端才能实现文件上传下载一系列操作,此外ftp协议允许TCP/IP网络上的两台或多台(多个客户端)计算机之间进行文件传输。


http://chatgpt.dhexx.cn/article/ONErIynV.shtml

相关文章

【FTP】——文件传输协议

文章目录 1.FTP简介1.1 FTP概述1.2 FTP主动模式1.3 FTP被动模式 2. 实例:匿名用户访问FTP服务3. 实例:本地用户访问FTP服务 1.FTP简介 1.1 FTP概述 FTP服务——用来传输文件的协议。 FTP服务器默认使用TCP协议的20、21端口与客户端进行通信. 20端口…

FTP协议使用

FTP协议大家都知道是文件传输协议,那这个协议到底是怎么样的呢,怎么用C语言是实现一个客户端呢? 我想通过这篇文章你能够理解FTP协议。 1-首先我们先了解一下FTP的工作流程 FTP分为 FTP服务器,FTP客户端,一般我们只…

FTP协议分析

一、实验名称 FTP协议分析 二、实验目标 1、理解FTP协议的工作原理; 2、了解FTP协议的常用命令; 3、了解应用层协议与传输层协议的关系 三、实验原理 FTP(File Transfer Protocal),是文件传输协议的简称。FTP使…

FTP 文件传输协议

FTP: 使用FTP进行文件传输时,会使用两个TCP连接。第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器…

在互联网上传输文件 —— FTP协议

文章目录 FTP协议是什么FTP协议传输过程FTP命令和回答参考文献 FTP协议是什么 FTP(File Transfer Protocol,文件传输协议) 是TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。…

文件传输协议(FTP)

因特网上使用的最广泛的文件传输协议。FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各个计算系统的细节,因而适合于在异构网络中的任意计算机之间传输文件。 FTP提供以下功能: 提供不同种…

FTP协议完全详解

1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的主要作用是供程序使用的。在阅读本文之前最好能够阅读TCP协议标准规范和Telnet协议标准规范。…

FTP协议(文件传输协议)

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序&am…

FTP文件传输协议详解

简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器。 需要通过控制连接20端口来控制双方的通信 需要通过数据连接21端口来进行双方的通信 主动模式:最大的特点是数据连接由服务器的20端口主动发起连接,这种情况可能会被客户端的防火墙拒绝…

FTP协议讲解

FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命…

FTP 协议

FTP 协议 FTP协议的(file Transfer Protocol)文本传输协议,简称为FTP, **FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,**采用的是c/s模式 也就是客户端和服务器…

浅谈FTP(文件传输协议)

FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议,用于在网络上传输文件。 该协议使用的端口号为20和21,其中20是数据端口,21是命令端口(默认情况下) 是否使用…

FTP协议

一、FTP的概述 1、文件传送协议FTP (File Transfer Protocol)是互联网上使用得最广泛的文件传送协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。 3、FTP 屏蔽了…

FTP文件传输协议

目录 一、FTP的概述 1.1 FTP的理念 1.2 FTP数据连接模式 1.2.1 连接模式分类 1.2.2 主动和被动模式的工作原理 二、配置FTP服务 2.1 配置匿名用户FTP服务 2.1.1 关闭防火墙安装vsftpd软件包 2.1.2 开启FTP服务并做备份 ​ 2.1.3 修改配置文件 2.1.4 设置目录下权限&a…

FTP协议详解

一、FTP协议的概述 1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。 3、FTP屏蔽了各…

手推向量投影长度、投影向量

投影 (tuyǐng),数学术语,指图形的影子投到一个面或一条线上。 声明向量F为F、 向量F的大小为|F|,向量b为b、向量b的大小为、|b| 当我们得到了投影的大小之后|F| 因为 F 在 b 上 所以 单位向量相同,F 和 b…

向量投影公式

公式一:a.b |a||b|cos(r) cos(r) a.b/|a|/|b| 公式二:|c| |a|cos(r) 公式三:|c| a.b/|b| 公式四:c b/|b| |c| 公式五:c a.b/|b|2 b 公式六:c a.b/b.b b 备注:|b| √b.b 朝向解P…

已知法向量,某一向量投影到其平面,计算投影向量

最近一直在计算旋转矩阵,奈何高中数学实在是差,大学高等数学也不行,线性代数也不行,现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个:对某一向量进行旋转平移,等于是在其左边乘了…

向量投影推导

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…