程序里需要使用到ftp服务器进行文件传输,但是又不能让每个用户都自行搭建ftp服务,所以只能在代码里实现这一功能。
一、准备工作
我能想到的需求,大神们都已经实现了。网上有现成的jar。这是下载地址:http://mina.apache.org/ftpserver-project/download_1.1.1.html
我用的是maven项目,所以直接引入pom文件就好。
<!--ftp服务-->
<dependency>
<groupId> org.apache.ftpserver </groupId>
<artifactId> ftpserver-core </artifactId>
<version> 1.1.1 </version>
</dependency>
二、代码实现
1、简单的实现
//创建匿名用户
public void createFtp1(){
try {
FtpServerFactory serverFactory = new FtpServerFactory();
BaseUser user = new BaseUser();
user.setName("anonymous");
user.setHomeDirectory("E:\\ftpServer");
serverFactory.getUserManager().save(user);
FtpServer server = serverFactory.createServer();
server.start();
System.out.println("ftp搭建完成");
}catch (
FtpException e){
e.printStackTrace();
}
}
调用此方法,浏览器访问:ftp://localhost/,效果如下:
2.创建一个用户。
//用户名密码登陆
public void createFtp2(){
try {
FtpServerFactory serverFactory = new FtpServerFactory();
BaseUser user = new BaseUser();
user.setName("test");
user.setPassword("123456");
user.setHomeDirectory("E:\\ftpServer");
serverFactory.getUserManager().save(user);
FtpServer server = serverFactory.createServer();
server.start();
System.out.println("ftp搭建完成");
}catch (
FtpException e){
e.printStackTrace();
}
}
3.给这个用户增加写权限。
//增加用户可写权限
public void createFtp3(){
try {
FtpServerFactory serverFactory = new FtpServerFactory();
BaseUser user = new BaseUser();
user.setName("test");
user.setPassword("123456");
user.setHomeDirectory("E:\\ftpServer");
List<Authority> authority = new ArrayList<Authority>();
authority.add(new WritePermission());
// //最大同时登录人数+最大同时登录ip
// authority.add(new ConcurrentLoginPermission(2,3));
// //最大下载速度+最大上传速度
// authority.add(new TransferRatePermission(10,30));
user.setAuthorities(authority);
serverFactory.getUserManager().save(user);
FtpServer server = serverFactory.createServer();
server.start();
System.out.println("ftp搭建完成");
}catch (
FtpException e){
e.printStackTrace();
}
}