日期:2014-05-16  浏览次数:20860 次

apache ftpserver中可以返回的信息

http://mina.apache.org/ftpserver/ 的框架可以很方便的建立一个ftp服务器。建立的方法和配置文件网上很多文章都有讲,也可以参考官网的document。

我就讲一下别人没讲的返回信息。

 

当客户端连到服务器进行上传下载的时候,服务器可以返回哪些信息呢?咱们就来研究一下这个吧。

 

一、extends DefaultFtplet

在DefaultFtplet中提供了很多方法接口,用于在客户端连接、断开、上传下载时返回信息。具体的列表参考http://mina.apache.org/ftpserver/ftplet.html

我们先override其中的method.

 

先写一个类public static class MyFtplet extends DefaultFtplet {}

然后点击eclipse中的source-override/implement method。eclipse会把可以override的method全部列出来。

我们选择onConnect,onLogin,onUpLoadEnd,onDisconnect这四个基本的方法。勾选完之后点击“OK ",这些方法就自动override好了。

 

二、session

override之后的方法里面有一个参数是FtpSession session。下面看看这个参数中的一些常用功能。

 

session.getConnectionTime()

获取用户连接的时间

session.getFileSystemView()

获取当前服务器的文件结构,返回类型为FtpFile

session.getFileSystemView().getHomeDirectory()

获取服务器根目录路径,返回类型为FtpFile

session.getFileSystemView().getWorkingDirectory()

获取用户当前连接的目录路径,返回类型为FtpFile

session.getFileSystemView().getWorkingDirectory().getName()

获取用户当前连接的目录名字,返回类型为String

session.getFileSystemView().getWorkingDirectory().getAbsolutePath()

获取用户当前连接的目录的完整路径名字,返回类型为String(返回之后最后是没有斜杠的)。用这个可以获取用户文件的存放路径。

session.getLoginTime()

获取用户登录时间(这和连接时间是不同的概念)

 

三、request

方法中的另一个参数FtpRequest request

 

request.getArgument()

获取用户提交的命令中的参数,比如存储命令,这个参数就是文件名

request.getCommand()

获取用户提交的命令中的命令。比如存储的命令是"STOR"

request.getRequestLine()

获取用户提交的命令中的命令+参数

 

四、返回一个用户上传文件的完整路径

 把当前路径和文件名加起来,就是完整的路径了。用这个路径也可以返回File型的文件。(filepath和file需要先定义)

		   public FtpletResult onUploadEnd(FtpSession session, FtpRequest request)
		     throws FtpException, IOException {
		    System.out.println("transport complete");
		    //获取当前路径
		    String path = session.getFileSystemView().getWorkingDirectory().getAbsolutePath();
		    //获取上传的文件名(服务器文件名和客户端文件名相同)
		    String filename = request.getArgument();
		    filepath = path+"/"+filename;
		    file = new File(filepath);
		    //返回上传文件的路径及文件名
		    System.out.println(filepath);
		    return super.onUploadEnd(session, request);
		   }


五、ftpserver需要导入的jar包

ftpserver-core-1.0.6.jar

mina-core-2.0.4.jar

ftplet-api-1.0.6.jar

以上jar包都在上面官网下载的文件中。