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

目录

一、简介

二、文件上传

三、文件下载

四、总结


一、简介

FTP全称File Transfer Protocol,即文件传输协议,是一种应用层的协议,主要面向文件。它是基于TCP协议之上的一种协议(网页默认端口号是8880,ftp的代理服务器的默认端口号是21)此外,ftp是基于C/S模式设计的。用户通过一个客户端主机程序连接至远程计算机上运行的服务器程序。依照FTP协议提供服务,用户可以将文件上传至FTP服务器,也可以从服务器中下载文件。在这里使用easyftp工具(开启ftp服务端)服务器是基于Easy FTP的,我们需要提前设置好用户和密码以及用户权限。如图:

二、文件上传

 上传文件时要创建FTPClient对象,然后与服务器连接,然后登录,登录成功后,就进入设置的默认文件夹。我们可以切换到目标目录,也可以创建出新目录,设置文件类型为二进制文件,通过输出流将文件上传至FTP服务器。

public class Upload {
	
	public static void main(String[] args) throws IOException {
		//FTP协议对象
		FTPClient ftpClient = new FTPClient();
		try (FileInputStream localIn = new FileInputStream("C:\\Users\\admin\\Desktop\\新建文件夹 (2)\\17dfec84-fd67-11ea-ab55-0242c0a88002.jpg")) {
			//与服务器连接
			ftpClient.connect("192.168.254.185",21);
			//登录
			ftpClient.login("admin", "admin");
			//切换至指定目录
			//创建单层目录不用加"/";
			boolean isChange  = ftpClient.changeWorkingDirectory("/ywh");
			System.out.println(isChange);
			if(!isChange) {
				ftpClient.makeDirectory("/ywh");
				isChange = ftpClient.changeWorkingDirectory("/ywh");
			}
			System.out.println(isChange);
			//设置文件类型,(字节型)否则文件传输有问题
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			//存储问价(将文件上传至FTP服务器)
//			ftpClient.storeFile("stu/yang.jpg", localIn);
			ftpClient.storeFile("yang.jpg", localIn);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//与服务器断开连接
			ftpClient.disconnect();
		}
		

	}
}

运行程序后,在浏览器中输入服务器的ip地址和web服务器端口号即可进入服务器页面,会发现就在默认文件夹下创建了“ywh/”这个目录,并上传了一张图片。

三、文件下载

下载文件时首先要创建FTPClient对象,然后与服务器连接,登录。登录成功后,需要切换到目标目录中去,设置文件类型(二进制文件)。然后通过输出流将文件下载。

public class Download {
	public static void main(String[] args) {
		// 下载的文件名称
		String downloadFIleName = "p511118051.jpg";
		// FTPclient对象
		FTPClient ftp = new FTPClient();
		try (FileOutputStream out = new FileOutputStream("C:\\Users\\admin\\Desktop\\" + downloadFIleName)) {
			ftp.connect("192.168.254.185", 21);// 连接
			ftp.login("admin", "admin");// 登录
			ftp.changeWorkingDirectory("ywh/");// 修改目录
			ftp.setFileType(FTPClient.BINARY_FILE_TYPE);// 设置文件类型
			boolean isTetrieve = ftp.retrieveFile(downloadFIleName, out);
			System.out.println(isTetrieve);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				ftp.disconnect();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
}

程序运行结束后,图片即下载至输出流指定的位置。

四、总结

在通过FTP协议传输文件时,首先需要连接服务器,然后登录,登录成功后需要选择文件夹,设置文件类型,然后进行上传或者是下载文件。

  • 27
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

磨剑斩秋招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值