springboot整合apache ftpserver详细教程(看这一篇就够了)

本文详细介绍了如何将Apache FtpServer与Springboot整合,包括FtpServer的特性、部署步骤以及两种整合方式:独立部署和内嵌到Springboot应用中。通过内嵌方式,FtpServer能随Springboot服务的启停而自动管理,同时提供了使用数据库存储账号信息的方案。
摘要由CSDN通过智能技术生成

一、Apache ftpserver相关简介

  Apache FtpServer是100%纯Java FTP服务器。它被设计为基于当前可用的开放协议的完整且可移植的FTP服务器引擎解决方案。FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行,也可以嵌入Java应用程序中。我们还提供对Spring应用程序内集成的支持,并以OSGi捆绑软件的形式提供我们的发行版。默认的网络支持基于高性能异步IO库Apache MINA。使用MINA,FtpServer可以扩展到大量并发用户。

二、Apache ftpserver相关特性

  • 100%纯Java,免费的开源可恢复FTP服务器
  • 多平台支持和多线程设计。
  • 用户虚拟目录,写入权限,空闲超时和上载/下载带宽限制支持。
  • 匿名登录支持。
  • 上传和下载文件都是可恢复的。
  • 处理ASCII和二进制数据传输。
  • 支持IP限制以禁止IP。
  • 数据库和文件可用于存储用户数据。
  • 所有FTP消息都是可定制的。
  • 隐式/显式SSL / TLS支持。
  • MDTM支持-您的用户可以更改文件的日期时间戳。
  • “模式Z”支持更快地上传/下载数据。
  • 可以轻松添加自定义用户管理器,IP限制器,记录器。
  • 可以添加用户事件通知(Ftplet)。

三、Apache ftpserver简单部署使用(基于windows下,linux大同小异)


users.properties文件配置

    例如配置一个bxl用户:
    #密码 配置新的用户
    ftpserver.user.bxl.userpassword=123456
    #主目录,这里可以自定义自己的主目录
    ftpserver.user.bxl.homedirectory=./res/bxl-home
    #当前用户可用
    ftpserver.user.bxl.enableflag=true
    #具有上传权限
    ftpserver.user.bxl.writepermission=true
    #最大登陆用户数为20
    ftpserver.user.bxl.maxloginnumber=20
    #同IP登陆用户数为2
    ftpserver.user.bxl.maxloginperip=2
    #空闲时间为300秒
    ftpserver.user.bxl.idletime=300
    #上传速率限制为480000字节每秒
    ftpserver.user.bxl.uploadrate=48000000
    #下载速率限制为480000字节每秒
    ftpserver.user.bxl.downloadrate=48000000

ftpd-typical.xml文件配置

    <server xmlns="http://mina.apache.org/ftpserver/spring/v1"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd" id="myServer">
        <listeners>
            <nio-listener name="default" port="2121">
                <ssl>
                    <keystore file="./res/ftpserver.jks" password="password" />
                </ssl>
                <!--注意:如果要支持外网连接,需要使用被动模式passive,默认开启主动模式-->
                <data-connection idle-timeout="60">
                    <active enabled="true" ip-check="true" />
                    <!-- <passive ports="2000-2222" address="0.0.0.0" external-address="xxx.xxx.xxx.xxx" /> -->
                </data-connection>
                <!--添加ip黑名单-->
                <blacklist>127.0.0.1</blacklist>
            </nio-listener>
        </listeners>
        
        <!--这里添加encrypt-passwords="clear",去掉密码加密-->
        <file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear" />
    </server>
  • 3、启动并访问
    • 首先启动服务,打开cmd并cd到bin路径执行.\ftpd.bat res/conf/ftpd-typical.xml,看到如下状态说明启动成功

      ftp_03.png

    • 测试访问,打开浏览器输入:ftp://localhost:2121/就会看到你的文件目录了,如果没有配置匿名用户,则会要求你输入用户名密码,正是你在user.properties中配置的

      ftp_04.png

四、Springboot整合Apache ftpserver(重点)

方式一:独立部署ftpserver服务

  这种方式比较简单,只要把服务部署好即可,然后通过FtpClien来完成相关操作,同jedis访问redis服务一个道理,没啥可说的。主要注意一下ftpserver的访问模式,如果要支持外网连接,需要使用被动模式passive。

方式二:将ftpserver服务内嵌到springboot服务中

  这种方式需要和springboot整合在一起,相对比较复杂,但这种方式下ftpserver会 随着springboot服务启动或关闭而开启或销毁。具体使用哪种方式就看自己的业务需求了。

  简单说一下我的实现的方案,ftpserver支持配置文件和db两种方式来保存账号信息和其它相关配置,如果我们的业务系统需要将用户信息和ftp的账号信息打通,并且还有相关的业务统计,比如

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值