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

文件传输协议:FTP

定义:ftp是File Transfer Protocol(文件传输协议),顾名思义,就是专门用来传输文件的协议。FTP用来在两台计算机之间传输文件,是Internet中应用非常广泛的服务之一,简单来说,支持FTP协议的服务器就是FTP服务器。
FTP是一种基于TCP的协议,具有跨平台的特性,支持Windox,Linux,Unix等操作系统。采用客户/服务器模式,通过FTP服务器可以快速的下载,上传文件。
同时它也是一个应用程序,通过FTP客户端与他人的服务器相连,可以访问服务器上的文件或信息。

一,搭建FTP客户端的过程

1.首先,下载EasyFtp Server ,并设置参数,如下所示:
在这里插入图片描述

再进入账号管理,设置FTP服务器允许下载/上传文件的目录,如下所示:
在这里插入图片描述

浏览器搜索:ip:8080,可显示出你设置的目录文件或者图片,点击即可下载。
在这里插入图片描述
2,创建FTP客户端,(以下是用我自己电脑来模拟客户端和服务器)。

上传至FTP服务器

第一步:首先先导入jar包
在这里插入图片描述
第二步:实现思路

步骤:
1,创建对象:通过FTPClient创建FTP协议的客户端对象:FTPClient ftpClient = new FTPClient();
2,连接:通过ftpClient.connect(“ip地址”,21); 连接TCP服务器(上传本地图片)
3,登录:ftpClient.login();
4,操作(上传):
通过FileInputStream创建文件输入流,用于读取本地图片
存储前设置文件类型:ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
存储文件:
ftpClient.storeFile();
参数1:ftp服务器的存储位置(目录+文件名)
参数2:本地的文件输入流
最后一步:关闭连接

【实现代码】

package com.my.ftp;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class Upload {
	public static void main(String[] args) {
		// FTP协议的客户端
		FTPClient ftpClient = new FTPClient();
		
		// 创建文件输入流,用于读取本地图片
		try (FileInputStream localIn = new FileInputStream("E:\\apesource\\download\\jay.jpg")){
			// Step1: 连接本地图片
			ftpClient.connect("192.168.254.180",21);
			// Step2:登录
			ftpClient.login("root", "root");
			
			// Step3:操作
			boolean isChange = ftpClient.changeWorkingDirectory("aa");// 切换工作目录
			System.out.println("切换工作目录:" + isChange);
			if(!isChange) {
				ftpClient.makeDirectory("aa");
				isChange = ftpClient.changeWorkingDirectory("aa");
			}
			System.out.println("切换工作目录:" + isChange);
   	       
			
			//  Step4:存储文件(将本地图片上传至FTP服务器)
			ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); // 存储前设置文件类型
			
			// 参数1:ftp服务器的存储位置(目录+文件名)
			// 参数2:本地的文件输入流
			boolean send = ftpClient.storeFile("jay_new.jpg", localIn);
			System.out.println(send);	
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				// 关闭连接
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}	
	}
}

【运行结果】
创建了一个aa文件夹,打开可看到刚才上传的图片jay_new.jpg
在这里插入图片描述
在这里插入图片描述
刚才代码中ftpClient.connect(“192.168.254.180”,21);
写的是我本机IP,所以,在上传到FTP服务器上的同时
,也可在本地内存上查看到指定目录下上传的图片:
在这里插入图片描述
**

从FTP服务器中下载

**
【实现思路】

1.创建一个FTP客户端的对象,通过对象的connect()方法,login()方法来连接指定的FTP服务器。
2. 创建FileOutputStream来设置文件下载的指定位置
3.在下载前用客户端对象的setFileType()方法来设置下载的文件类型,这里我们使用BINARY_FILE_TYPE来进行图片的下载。
4.retrieveFile()传入要下载的文件名和输出流,进行图片的下载;其中此方法返回一个boolean值,可以输出它的返回值来判断它是否下载成功。

【实现代码】

package com.my.ftp;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;

// 下载FTP服务器中的文件
public class DownLoadFtp {
	public static void main(String[] args) {
		String downloadFileName = "yibo.jpg";
		FTPClient ftpClient = new FTPClient();
		try (FileOutputStream out = new FileOutputStream("E:\\apesource\\ftp\\" + downloadFileName)){
			ftpClient.connect("192.168.254.180", 21);
			ftpClient.login("root", "root");
			
			ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
			boolean isRetirve = ftpClient.retrieveFile(downloadFileName, out);
			System.out.println("下载成功?" + isRetirve);
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

【运行结果】:
在输出流中指定的位置我们可以看到刚才在FTP服务器上下载的图片:
在这里插入图片描述

  • 55
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值