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

目录

一、FTP协议

二、easyftp_server基本配置

三、文件上传 

四、下载文件 

五、小扩展---获取FTP指定目录下的文件

一、FTP协议

        FTP是File Transfer Protocol,文件传输协议,是一种应用层的协议,主要面向文件。(网页的默认端口号8880,ftp的代理服务器的默认端口号是21)
        此外,FTP是基于C/S模式而设计的。在进行FTP操作的时候,即需要客户应用程序,也需要服务器端程序。我们一般会先在自己的计算机中执行FTP客户应用程序,在远程服务器中执行FTP服务器应用程序,这样,就可以通过FTP客户应用程序和FTP进行连接。连接成功后,可以进行各种操作。在FTP中,客户机只提出请求各接收服务,服务器只接收请求和执行服务。
     下面主要介绍使用easyftp_server进行文件上传与下载。

二、easyftp_server基本配置

启动easyftp_server服务器;

 

创建一个用户并设置用户名、密码和文件上传的主目录,以及设置相关的权限;

三、文件上传 

首先创建FTP协议的客户端对象

FTPClient ftpClient = new FTPClient();

 其次连接FTP服务器,传入IP地址和端口号

ftpClient.connect("192.168.xxx.xxx",21);

 最后登录,传入用户名和密码,即客户端和服务器连接成功。

ftpClient.login("xxxxx", "xxxxx");

 接下来就要上传文件,首先切换指定目录(也就是需要上传到的文件夹);

ftpClient.changeWorkingDirectory("XXXX");

其次存储文件(就是将本地文件上传至FTP服务器),需要用到storeFile()方法,参数1:ftp服务器的存储位置(目录+文件名),参数2:本地的文件输入流:FileInputStream localIn = new FileInputStream("e:\\xxx.jpg")

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //存储前设置文件类型
ftpClient.storeFile("xxx.jpg",localIn); //存储

最后断开连接

ftpClient.disconnect();

四、下载文件 

 首先创建FTP协议的客户端对象

FTPClient ftpClient = new FTPClient();

 其次连接FTP服务器,传入IP地址和端口号

ftpClient.connect("192.168.xxx.xxx",21);

 最后登录,传入用户名和密码,即客户端和服务器连接成功。

ftpClient.login("xxxxx", "xxxxx");

 接下来就要下载文件,首先切换指定目录(也就是需要从哪个文件夹下载);

ftpClient.changeWorkingDirectory("XXXX");

其次存储文件(就是获取FTP服务器指定目录的文件),需要用到retrieveFile()方法,参数1:服务器指定的文件,参数2:本地的文件输出流:FileOutputStream out = new FileOutputStream("E:\\test\\" + loadName),loadName指定下载的文件名

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
boolean isRetrive = ftpClient.retrieveFile(loadName, out);
System.out.println("下载成功?" + isRetrive);

最后断开连接

ftpClient.disconnect();

五、小扩展---获取FTP指定目录下的文件 

1.创建FTP协议的客户端对象ftpClient

2.连接并登录

3.切换至工作目录

4.获取该目录下的所有文件ftpClient.listFiles(),得到一个FTPFile[]的数组,遍历该数组得到每一个文件

5.获取文件创建时间:file.getTimestamp().getTime();

   获取文件大小:file.getSize()

  上传用户:file.getUser()

public class FtpFileList {
	public static void main(String[] args) {
		FTPClient ftpClient = new FTPClient();
		
		try {
			//连接并登录
			ftpClient.connect("192.168.xxx.xxx",21);
			ftpClient.login("xxxx", "xxxx");
			
			//切换至工作目录
			boolean isChange = ftpClient.changeWorkingDirectory("xxxxx");
			System.out.println(isChange);
			
			//日期格式转换
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
			
			//获取该目录下的所有文件
			FTPFile[] files = ftpClient.listFiles();
			for(FTPFile file : files) {
				System.out.println("文件名称" + file.getName());
				
				//获取文件创建时间
				Date createDate = file.getTimestamp().getTime();
				
				//日期格式化
				String createDateStr = sdf.format(createDate);
				System.out.println("创建时间:" + createDateStr);
				
				//文件大小
				System.out.println("文件大小:" + file.getSize());
				
				//上传用户
				System.out.println("上传用户:" + file.getUser());
				System.out.println();
				
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

 以上就是对于基于FTP协议的文件上传与下载的分享,如有不当之处还请大家多多评论指正,喜欢文章的可以留下您的关注和点赞,一起学习,一起加油!

  • 73
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值