SpringBoot项目集成FTP的方法步骤

网友投稿 1205 2022-11-27

SpringBoot项目集成FTP的方法步骤

SpringBoot项目集成FTP的方法步骤

目录写在前面FTP相关软件安装开始集成引入相关jar包引入FTPUtils.java和FTPHelper.java如何使用

写在前面

FTP是一个文件传输协议,被开发人员广泛用于在互联网中文件传输的一套标准协议。

而我们通常在开发过程中也要通过FTP来搭建文件系统,用于存储系统文件等。

目前正值SpringBoot热潮,所以我们接下来会一起学习一下SpringBoot如何集成FTP,以及相关的FTP组件包,还有其主要提供的几个方法。

当然在这系列文章结尾,我们还会给出确切的FTP操作工具类,算是一些小成果,希望和大家共勉。

FTP相关软件安装

我在此就不介绍如何安装FTP了,但是我可以推荐给大家一些软件作为选择。

linux版本,推荐使用vsftpd进行搭建FTP,只需要改指定的几个配置,添加上用户即可。

Windows版本,推荐使用Serv-U进行搭建FTP,图形化界面,有中文版,操作起来很简单。

开始集成

引入相关jar包

这里我们对FTP相关的组件包使用的是edtFTPj,其实之前很多人都选择的是Java自带的包来实现FTP功能的。

在我们的SpringBoot项目中pom.xml下添加以下依赖。

com.enterprisedt

edtFTPj

1.5.3

更新maven进行引入,然后我们进行下一步。

引入FTPUtils.java和FTPHelper.java

引入两个工具类。

我这里先贡献一下代码,请大家酌情作为参考。

/**

* Ftp 工具类

*/

public class FtpHelper {

private FTPClient ftp;

public FtpHelper() {

}

/**

* 初始化Ftp信息

*

* @param ftpServer ftp服务器地址

* @param ftpPort Ftp端口号

* @param ftpUsername ftp 用户名

* @param ftpPassword ftp 密码

*/

public FtpHelper(String ftpServer, int ftpPort, String ftpUsername,

String ftpPassword) {

connect(ftpServer, ftpPort, ftpUsername, ftpPassword);

}

/**

* 连接到ftp

*

* @param ftpServer ftp服务器地址

* @param ftpPort Ftp端口号

* @param ftpUsername ftp 用户名

* @param ftpPassword ftp 密码

*/

public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) {

ftp = new FTPClient();

try {

ftp.setControlEncoding("UTF-8");

ftp.setRemoteHost(ftpServer);

ftp.setRemotePort(ftpPort);

ftp.setTimeout(6000);

ftp.setConnectMode(FTPConnectMode.ACTIVE);

ftp.connect();

ftp.login(ftpUsername, ftpPassword);

ftp.setType(FTPTransferType.BINARY);

} catch (Exception e) {

e.printStackTrace();

ftp = uuvChGTnull;

}

}

/**

* 更改ftp路径

*

* @param ftp

* @param dirName

* @return

*/

public boolean checkDirectory(FTPClient ftp, String dirName) {

boolean flag;

try {

ftp.chdir(dirName);

flag = true;

} catch (Exception e) {

e.printStackTrace();

flag = false;

}

return flag;

}

/**

* 断开ftp链接

*/

public void disconnect() {

try {

if (ftp.connected()) {

ftp.quit();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 读取ftp文件流

*

* @param filePath ftp文件路径

* @return s

* @throws Exception

*/

public InputStream downloadFile(String filePath) throws Exception {

InputStream inputStream = null;

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.length() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

ftp.chdir(s);

}

}

byte[] data;

try {

data = ftp.get(fileName);

inputStream = new ByteArrayInputStream(data);

} catch (Exception e) {

e.printStackTrace();

}

return inputStream;

}

/**

* 上传文件到ftp

*

* @param file 文件对象

* @param filePath 上传的路径

* @throws Exception

*/

public void uploadFile(File file, String filePath) throws Exception {

InputStream inStream = new FileInputStream(file);

uploadFile(inStream, filePath);

}

/**

* 上传文件到ftp

*

* @param inStream 上传的文件流

* @param filePath 上传路径

* @throws Exception

*/

public void uploadFile(InputStream inStream, String filePath)

throws Exception {

if (inStream == null) {

return;

}

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.length() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

if (!checkDirectory(ftp, s)) {

ftp.mkdir(s);

}

}

}

ftp.put(inStream, fileName);

}

/**

* 删除ftp文件

*

* @param filePath 文件路径

* @throws Exception

*/

public void deleteFile(String filePath) throws Exception {

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.length() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

if (checkDirectory(ftp, s)) {

ftp.chdir(s);

}

}

}

ftp.delete(fileName);

}

/**

* 切换目录

*

* @param path

* @throws Exception

*/

public void changeDirectory(String path) {

if (!ValidateUtils.isEmpty(path)) {

try {

ftp.chdir(path);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

/**

* Ftp 工具类

*/

public class FtpHelper {

private FTPClient ftp;

public FtpHelper() {

}

/**

* 初始化Ftp信息

*

* @param ftpServer ftp服务器地址

* @param ftpPort Ftp端口号

* @param ftpUsername ftp 用户名

* @param ftpPassword ftp 密码

*/

public FtpHelper(String ftpServer, int ftpPort, String ftpUsername,

String ftpPassword) {

connect(ftpServer, ftpPort, ftpUsername, ftpPassword);

}

/**

* 连接到ftp

*

* @param ftpServer ftp服务器地址

* @param ftpPort Ftp端口号

* @param ftpUsername ftp 用户名

* @param ftpPassword ftp 密码

*/

public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) {

ftp = new FTPClient();

try {

ftp.setControlEncoding("UTF-8");

ftp.setRemoteHost(ftpServer);

ftp.setRemotePort(ftpPort);

ftp.setTimeout(6000);

ftp.setConnectMode(FTPConnectMode.ACTIVE);

ftp.connect();

ftp.login(ftpUsername, ftpPassword);

ftp.setType(FTPTransferType.BINARY);

} catch (Exception e) {

e.printStackTrace();

ftp = null;

}

}

/**

* 更改ftp路径

*

* @param ftp

* @param dirName

* @return

*/

public boolean checkDirectory(FTPClient ftp, String dirName) {

boolean flag;

try {

ftp.chdir(dirName);

flag = true;

} catch (Exception e) {

e.printStackTrace();

flag = false;

}

return flag;

}

/**

* 断开ftp链接

*/

public void disconnect() {

try {

if (ftp.connected()) {

ftp.quit();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 读取ftp文件流

*

* @param filePath ftp文件路径

* @return s

* @throws Exception

*/

public InputStream downloadFile(String filePath) throws Exception {

InputStream inputStream = null;

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.length() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

ftp.chdir(s);

}

}

byte[] data;

try {

data = ftp.get(fileName);

inputStream = new ByteArrayInputStream(data);

} catch (Exception e) {

e.printStackTrace();

}

uuvChGT return inputStream;

}

/**

* 上传文件到ftp

*

* @param file 文件对象

* @param filePath 上传的路径

* @throws Exception

*/

public void uploadFile(File file, String filePath) throws Exception {

InputStream inStream = new FileInputStream(file);

uploadFile(inStream, filePath);

}

/**

* 上传文件到ftp

*

* @param inStream 上传的文件流

* @param filePath 上传路径

* @throws Exception

*/

public void uploadFile(InputStream inStream, String filePath)

throws Exception {

if (inStream == null) {

return;

}

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.luuvChGTength() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

if (!checkDirectory(ftp, s)) {

ftp.mkdir(s);

}

}

}

ftp.put(inStream, fileName);

}

/**

* 删除ftp文件

*

* @param filePath 文件路径

* @throws Exception

*/

public void deleteFile(String filePath) throws Exception {

String fileName = "";

filePath = StringUtils.removeStart(filePath, "/");

int len = filePath.lastIndexOf("/");

if (len == -1) {

if (filePath.length() > 0) {

fileName = filePath;

} else {

throw new Exception("没有输入文件路径");

}

} else {

fileName = filePath.substring(len + 1);

String type = filePath.substring(0, len);

String[] typeArray = type.split("/");

for (String s : typeArray) {

if (checkDirectory(ftp, s)) {

ftp.chdir(s);

}

}

}

ftp.delete(fileName);

}

/**

* 切换目录

*

* @param path

* @throws Exception

*/

public void changeDirectory(String path) {

if (!ValidateUtils.isEmpty(path)) {

try {

ftp.chdir(path);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

如何使用

public static void main(String[] args) {

try {

// 从ftp-文件

FtpHelper ftp = new FtpHelper("127.0.0.1", 21, "root", "123456");

File file = new File("D:\1.doc");

ftp.uploadFile(file, "test/weradsfad2.doc");

ftp.disconnect();

} catch (Exception e) {

e.printStackTrace();

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:rabbitmq thinkphp5 路由模式
下一篇:php xdebug phpstrom配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~