相关文章推荐
一直单身的海豚  ·  iview ...·  1 年前    · 
帅气的稀饭  ·  A randomised ...·  1 年前    · 

上面我们的部署工作完成了,那么文件上传下载后,ftpserver会自动相应我们的上传下载操作,也就是说ftpServer服务器会得到触发,那么我们如果要得到文件的一些信息,比如说文件的路径、大小、类型等等,并且还有我们的逻辑要处理,比如说要将一些信息插入到我们的数据库中,这时我们就要编写一个类,最主要的是这个类要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()

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

package com.ftp.util;
import java.io.IOException;
import org.apache.ftpserver.ftplet.DefaultFtplet;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.FtpletResult;
public class FtpService extends DefaultFtplet{
	@Override
	public FtpletResult onUploadEnd(FtpSession session, FtpRequest request)
			throws FtpException, IOException {
			String path = session.getFileSystemView().getWorkingDirectory().getAbsolutePath();//获取当前路径  
			String rootPath = session.getUser().getHomeDirectory();//获取根目录绝对路径
			String filename = request.getArgument();//获取文件名
			System.out.println("path="+path+"rootPath="+rootPath+"filename="+filename);
		    //得到相应的信息后,下面可以进行我们的逻辑处理啦.......
		return super.onUploadEnd(session, request);
	@Override
	public FtpletResult onUploadStart(FtpSession session, FtpRequest request)
			throws FtpException, IOException {
		return super.onUploadStart(session, request);


上面只是重写了两个方法,我们可以根据项目的需求重写相应的方法即可!!这样我们的FtpServer基本上大功告成了,每当用户上传文件后,ftpServer就会得到监听,处理我们所需的逻辑块,使用applet进行ftp文件上传,见下篇,实现的主要功能是通过ftp以及client进行大文件的上传处理!!

上面我们的部署工作完成了,那么文件上传下载后,ftpserver会自动相应我们的上传下载操作,也就是说ftpServer服务器会得到触发,那么我们如果要得到文件的一些信息,比如说文件的路径、大小、类型等等,并且还有我们的逻辑要处理,比如说要将一些信息插入到我们的数据库中,这时我们就要编写一个类,最主要的是这个类要extends一个很重要的类---DefaultFtplet,我们就会得到想要的文件数 <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.13</version&g
Spring Aop 报错error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator
1. 安装 Apache FTP 服务器软件 首先,需要下载并安装 Apache FTP 服务器软件。可以在 Apache FTP 官方网站上下载最新版本的软件。下载完成后,双击运行安装程序,按照向导指示完成安装。 2. 配置 Apache FTP 服务器 安装完成后,需要对 Apache FTP 服务器进行配置。可以通过编辑配置文件来完成配置。配置文件通常位于安装目录下的 conf 目录中,名为 ftpd.conf。 3. 配置用户和权限 在配置文件中,需要创建用户并设置权限。可以通过添加以下内容来完成此步骤: user username password user_home_directory [permissions] 其中,username 是要创建的用户名,password 是用户的密码,user_home_directory 是用户的主目录,[permissions] 是用户的权限。权限可以是 r(读取权限)、w(写入权限)或 rw(读取和写入权限)。 4. 启动 Apache FTP 服务器 配置完成后,需要启动 Apache FTP 服务器。可以在命令行中输入以下命令来启动服务器: ./apachectl start 启动成功后,可以通过浏览器或 FTP 客户端访问服务器。在浏览器中输入 ftp://localhost 即可打开服务器页面。在 FTP 客户端中输入服务器地址、用户名和密码,即可连接到服务器。 5. 测试 Apache FTP 服务器 连接成功后,可以测试 Apache FTP 服务器是否正常工作。可以上传和下载文件,检查服务器的响应时间和速度。如果一切正常,则说明 Apache FTP 服务器已经安装成功。