首页 技术 正文
技术 2022年11月11日
0 收藏 916 点赞 4,072 浏览 2373 个字

上面我们的部署工作完成了,那么文件上传下载后,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进行大文件的上传处理!!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,030
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,520
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,368
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,148
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859