linux服务器上搭建ftp服务器无法上传文件

最近在项目中遇到了一个问题,困扰了我好几天,客户有个需求需要在页面把xml文件上传,然后后台解析文件并入库。由于dubbo框架的dubbo协议有文件大小的限制,不能传输超过8M的文件,所以和组员讨论后决定使用ftp服务器的方案。

实现方案:页面上传文件直接上传到ftp服务器,然后后台执行到解析文件的步骤时直接去ftp服务器的指定路径上下载客户上传的xml文件。

很简单的业务逻辑,在本地(自己的电脑,win10系统)开发、测试都没有任何问题,但是当把应用部署到云服务器(linux系统)的测试环境上时,发现文件一直无法上传,但是文件上传存放的路径却可以生成,导致无法获取文件解析入库。

然后开始排查问题,开始的时候怀疑是ftp服务器搭建过程中缺少了哪些配置,后面否定了,因为在本地测试的时候也是用同一个ftp服务器,最后排查到ftp上传的Java工具类上,发现上传的时候没有抛任何异常storeFile()接口一直返回false;
如下图所示:
在这里插入图片描述
后台日志如下:
在这里插入图片描述
解决方案如下图所示:
在这里插入图片描述
上面那两行的第一行的作用如下:
在项目中使用 commons-net-3.0.1jar实现FTP文件的下载,在 windows xp或win10上运行正常,但是放到linux上,却无法正常使用上传文件接口和获取文件列表接口。所以需要在调用storeFile、IistFiles这两个方法之前,调用FTPClient.enterlocalPassiveMode()这个方法的意思就是每次数据连接之前, ftp clien诉 ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能毎次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值