程序裏需要使用到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();
}
}