首页>>后端>>SpringBoot->SpringBoot项目集成FTP

SpringBoot项目集成FTP

时间:2023-11-30 本站 点击:0

写在前面

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

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

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

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

FTP相关软件安装

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

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

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

开始集成

引入相关jar包

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

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

<dependency><groupId>com.enterprisedt</groupId><artifactId>edtFTPj</artifactId><version>1.5.3</version></dependency>

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

引入FTPUtils.java和FTPHelper.java

引入两个工具类。

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

/***Ftp工具类*/publicclassFtpHelper{privateFTPClientftp;publicFtpHelper(){}/***初始化Ftp信息**@paramftpServerftp服务器地址*@paramftpPortFtp端口号*@paramftpUsernameftp用户名*@paramftpPasswordftp密码*/publicFtpHelper(StringftpServer,intftpPort,StringftpUsername,StringftpPassword){connect(ftpServer,ftpPort,ftpUsername,ftpPassword);}/***连接到ftp**@paramftpServerftp服务器地址*@paramftpPortFtp端口号*@paramftpUsernameftp用户名*@paramftpPasswordftp密码*/publicvoidconnect(StringftpServer,intftpPort,StringftpUsername,StringftpPassword){ftp=newFTPClient();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(Exceptione){e.printStackTrace();ftp=null;}}/***更改ftp路径**@paramftp*@paramdirName*@return*/publicbooleancheckDirectory(FTPClientftp,StringdirName){booleanflag;try{ftp.chdir(dirName);flag=true;}catch(Exceptione){e.printStackTrace();flag=false;}returnflag;}/***断开ftp链接*/publicvoiddisconnect(){try{if(ftp.connected()){ftp.quit();}}catch(Exceptione){e.printStackTrace();}}/***读取ftp文件流**@paramfilePathftp文件路径*@returns*@throwsException*/publicInputStreamdownloadFile(StringfilePath)throwsException{InputStreaminputStream=null;StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){ftp.chdir(s);}}byte[]data;try{data=ftp.get(fileName);inputStream=newByteArrayInputStream(data);}catch(Exceptione){e.printStackTrace();}returninputStream;}/***上传文件到ftp**@paramfile文件对象*@paramfilePath上传的路径*@throwsException*/publicvoiduploadFile(Filefile,StringfilePath)throwsException{InputStreaminStream=newFileInputStream(file);uploadFile(inStream,filePath);}/***上传文件到ftp**@paraminStream上传的文件流*@paramfilePath上传路径*@throwsException*/publicvoiduploadFile(InputStreaminStream,StringfilePath)throwsException{if(inStream==null){return;}StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){if(!checkDirectory(ftp,s)){ftp.mkdir(s);}}}ftp.put(inStream,fileName);}/***删除ftp文件**@paramfilePath文件路径*@throwsException*/publicvoiddeleteFile(StringfilePath)throwsException{StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){if(checkDirectory(ftp,s)){ftp.chdir(s);}}}ftp.delete(fileName);}/***切换目录**@parampath*@throwsException*/publicvoidchangeDirectory(Stringpath){if(!ValidateUtils.isEmpty(path)){try{ftp.chdir(path);}catch(Exceptione){e.printStackTrace();}}}}
/***Ftp工具类*/publicclassFtpHelper{privateFTPClientftp;publicFtpHelper(){}/***初始化Ftp信息**@paramftpServerftp服务器地址*@paramftpPortFtp端口号*@paramftpUsernameftp用户名*@paramftpPasswordftp密码*/publicFtpHelper(StringftpServer,intftpPort,StringftpUsername,StringftpPassword){connect(ftpServer,ftpPort,ftpUsername,ftpPassword);}/***连接到ftp**@paramftpServerftp服务器地址*@paramftpPortFtp端口号*@paramftpUsernameftp用户名*@paramftpPasswordftp密码*/publicvoidconnect(StringftpServer,intftpPort,StringftpUsername,StringftpPassword){ftp=newFTPClient();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(Exceptione){e.printStackTrace();ftp=null;}}/***更改ftp路径**@paramftp*@paramdirName*@return*/publicbooleancheckDirectory(FTPClientftp,StringdirName){booleanflag;try{ftp.chdir(dirName);flag=true;}catch(Exceptione){e.printStackTrace();flag=false;}returnflag;}/***断开ftp链接*/publicvoiddisconnect(){try{if(ftp.connected()){ftp.quit();}}catch(Exceptione){e.printStackTrace();}}/***读取ftp文件流**@paramfilePathftp文件路径*@returns*@throwsException*/publicInputStreamdownloadFile(StringfilePath)throwsException{InputStreaminputStream=null;StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){ftp.chdir(s);}}byte[]data;try{data=ftp.get(fileName);inputStream=newByteArrayInputStream(data);}catch(Exceptione){e.printStackTrace();}returninputStream;}/***上传文件到ftp**@paramfile文件对象*@paramfilePath上传的路径*@throwsException*/publicvoiduploadFile(Filefile,StringfilePath)throwsException{InputStreaminStream=newFileInputStream(file);uploadFile(inStream,filePath);}/***上传文件到ftp**@paraminStream上传的文件流*@paramfilePath上传路径*@throwsException*/publicvoiduploadFile(InputStreaminStream,StringfilePath)throwsException{if(inStream==null){return;}StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){if(!checkDirectory(ftp,s)){ftp.mkdir(s);}}}ftp.put(inStream,fileName);}/***删除ftp文件**@paramfilePath文件路径*@throwsException*/publicvoiddeleteFile(StringfilePath)throwsException{StringfileName="";filePath=StringUtils.removeStart(filePath,"/");intlen=filePath.lastIndexOf("/");if(len==-1){if(filePath.length()>0){fileName=filePath;}else{thrownewException("没有输入文件路径");}}else{fileName=filePath.substring(len+1);Stringtype=filePath.substring(0,len);String[]typeArray=type.split("/");for(Strings:typeArray){if(checkDirectory(ftp,s)){ftp.chdir(s);}}}ftp.delete(fileName);}/***切换目录**@parampath*@throwsException*/publicvoidchangeDirectory(Stringpath){if(!ValidateUtils.isEmpty(path)){try{ftp.chdir(path);}catch(Exceptione){e.printStackTrace();}}}}

如何使用

publicstaticvoidmain(String[]args){try{//从ftp下载文件FtpHelperftp=newFtpHelper("127.0.0.1",21,"root","123456");Filefile=newFile("D:\1.doc");ftp.uploadFile(file,"test/weradsfad2.doc");ftp.disconnect();}catch(Exceptione){e.printStackTrace();}}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/4359.html