apache FtpServer整合spring逻辑处理
上面我们的部署工作完成了,那么文件上传下载后,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进行大文件的上传处理!!
apache FtpServer整合spring逻辑处理的更多相关文章
- apache FtpServer 整合spring部署
我们在项目中可能会出现这样的需求,使用ftp上传很大的文件后对需要对文件进行相应的逻辑处理,这时我们可以使用apache ftpServer来处理这段逻辑,只要我们做相应的部署和编写我们的逻辑代码,这 ...
- apache shiro整合spring(一)
apache shiro整合spring 将shiro配置文件整合到spring体系中 方式一:直接在spring的配置文件中import shiro的配置文件 方式二:直接在web.xml中配置sh ...
- springboot整合apache ftpserver详细教程(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/12192425.html,否则将追究法律责任!!! 一.Apache ftpserver相关 ...
- struts2整合spring应用实例
我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...
- eclipse环境下基于已构建struts2项目整合spring+hibernate
本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...
- Mybatis整合Spring实现事务管理的源码分析
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...
- ActiveMQ整合spring、同步索引库
1. Activemq整合spring 1.1. 使用方法 第一步:引用相关的jar包. <dependency> <groupId>org.springframework ...
- 整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建
整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建 1. 介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模 ...
- JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存
1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 ...
随机推荐
- Redis 该选择哪种持久化配置
这个标题或许会让你想起<黑客帝国>里经典的台词,你要选择蓝色药丸,还是红色药丸? Redis 是我们重度使用的一个开源软件,对它的持久化配置做一番相对深入的总结,是值得的.目前它有两种主流 ...
- redis知识
http://www.cnblogs.com/moon521/p/5301895.html 菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html
- Android.mk具体解释
概述 Android.mk文件用来向编译系统描写叙述怎样编译你的源码.更确切地说,该文件事实上就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量降低源码中声明 ...
- XCode中在提示窗体中对已弃用的API接口画上红线
当我们在XCode中写程序时会不断的出现相关API提示窗体,那敲起来是一个爽啊. 有时候会看到一些API已经弃用了被画上红色的横线.说明该接口已经被弃用,仍保留,但不建议使用,对弃用API实现画横线事 ...
- C# CheckedListBox控件的使用方法
1. 加入项 checkedListBox1.Items.Add("蓝色"); checkedListBox1.Items.Add("红色"); checked ...
- gitlab升级方法
gitlab升级方法:国内网络环境推荐方法二方法一:官网的升级方式 (1)停止git服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab- ...
- jstl数字保留两位小数
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><fmt:fo ...
- ProFTPD“killed (signal 15)”自动退出问题解决
proftpd服务端每隔几天就重启一次,日志如下: 看起来这又像是一个仅有两行日志的无头案了.不过由于日志明确给出了退出信号“killed (signal 15)”,因此Google的话还是比较简单找 ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- jquery返回顶部
// 返回顶部 var fixed_totop = $('.back_top').on('click',function(){ $('html, body').animate({scrollTop: ...