一、简介
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协议传输文件时,首先需要连接服务器,然后登录,登录成功后需要选择文件夹,设置文件类型,然后进行上传或者是下载文件。
版权归原作者 磨剑斩秋招 所有, 如有侵权,请联系我们删除。