目录

一、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网络上的两台或多台(多个客户端)计算机之间进行文件传输。

基于FTP协议实现文件上传与下载相关推荐

  1. 基于TCP协议的文件上传与下载

    一.前言 TCP协议:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793 定义.传输控制 ...

  2. 在windows环境下ftp服务器的文件上传和下载

    在windows环境下ftp服务器的文件上传和下载 mo 一.上传本地文件 第一步:登录FTP服务器.在开始菜单中输入cmd,回车进入.输入ftp进入服务器,输入命令格式:open FTP服务器地址 ...

  3. Mr.张小白(案例:基于Spring MVC实现文件上传和下载)

    基于Spring MVC实现文件上传和下载 一.步骤 1.引入相关依赖pom.xml <?xml version="1.0" encoding="UTF-8&quo ...

  4. 基于tornado服务器的文件上传和下载

    文章目录 文件上传的服务端技术解析 基于Ajax技术实现的文件上传客户端 方法1:使用 ajaxfileupload.js 方法2:仅依赖 jquery.js 文件下载的服务端技术解析 文件上传的服务 ...

  5. TCP文件上传Java_java 基于TCP协议的文件上传

    参考文档 1.https://www.sxt.cn/Java_jQuery_in_action/ten-filebytestream.html 2.https://www.sxt.cn/Java_jQ ...

  6. java spring文件下载_SpringMVC实现文件上传和下载的工具类

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中. 开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成 ...

  7. linux的常用操作——基于ftp的windows10和腾讯云centos操作系统之间的文件上传和下载

    \qquad在腾讯云服务器的centos操作系统上,安装vsftpd并进行配置,然后基于ftp实现windows10操作系统和腾讯云centos系统之间的文件上传和下载. 文章目录 1.基于腾讯云服务 ...

  8. 科普|不同协议下远程服务器文件上传_下载优劣对比

    作为一个程序员,如果不知道如何进行远程服务器的文件上传与下载,实在是一件尴尬的事情.打开百度,搜索「远程服务器 上传下载」,你能得到 63,100,000 个搜搜结果,五花八门的操作方式的让人眼花缭乱 ...

  9. 基于MFT文件上传和下载

    1. MFT介绍 Managed File Transfer ("MFT")是一种安全的数据传输软件,是通过网络从一台计算机到另一台计算机的数据传输. 大文件传输(MFT)是一种安 ...

最新文章

  1. Linux退出sqlplus界面,Linux CentOS中使用SQL*Plus启动和关闭数据库
  2. 从如何停掉 Promise 链说起
  3. JavaWeb笔记05-解决线程安全问题
  4. Android Studio 下使用git -- 个人,本地版本控制
  5. 利用Python抓取搜索引擎结果
  6. Linux中级之netfilter防火墙(iptables)
  7. 保存单文件为mhtml
  8. 蓝桥杯题解 时间显示 Java答案
  9. Web 全栈工程师的自我修养
  10. 学习mescroll的下拉刷新、上拉加载
  11. 关于求余运算(余数为正)
  12. 丢掉上半年全球新能源汽车销冠的特斯拉,烦恼不止比亚迪
  13. 使用iText读取PDF文件
  14. 【程序员的爱情】彼岸花开谁又种下了执念
  15. 润乾报表Api导出word只读
  16. C++指向const对象的指针和const指针
  17. 洛谷P1010 [NOIP1998 普及组] 幂次方 C语言/C++
  18. Delphi线程同步
  19. Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制
  20. Gym - 100203A Ariel 暴力+位运算

热门文章

  1. MP代码生成器(拿来即用)
  2. 马东-好好说话-听课笔记
  3. 如何检查迷你计算机有无兰牙,如何检查Windows10 PC是否具有内置蓝牙
  4. Istio服务网格进阶③:基于Istio服务网格实现灰度发布机制
  5. 重磅!超详细图解Self-Attention!
  6. sqlserver分页模糊查询sql语句
  7. window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路
  8. java 类名正则表达式_java – 匹配完全限定类名的正则表达式
  9. 【基础】在css中绘制三角形及相关应用
  10. NIO Reactor模型