上周给河北一客户做一个数据导入功能,报错后将错误log日志及报错的文件上传到FTP上,方便追溯。用的jdk1.6,在网上找了个jar包,本地测试的时候一切顺利,就让客户那边测试,测试发现报错后log日志能传上去,原文件一直传不上去。我们用的FTP服务器是公司的,客户用的是他们自己搭的FTP服务器,所以我们就连了下客户的FTP进行调试:
发现FTPClient.storeFile();这个方法返回了false,
跟进去发现连接模式为被动模式并且在创建服务器连接时这个ip地址是本地局域网ip,端口号也没有。所以就想到了连接问题,找到__dataConnectionMode赋值的地方,确认应该使用enterLocalPassiveMode()这个方法。调用下FTPClient.enterLocalPassiveMode();放在FTPClient.storeFile()方法前面再次测试:
这次连接服务器的ip也变成了客户服务器的ip,端口也新开了一个,上传文件成功。
https://mp.weixin.qq.com/s/7c4hYX2WoFaA2-fDBLmJAA