????????上周給河北一客戶做一個數(shù)據(jù)導入功能众辨,報錯后將錯誤log日志及報錯的文件上傳到FTP上,方便追溯耕挨。用的jdk1.6细卧,在網(wǎng)上找了個jar包,本地測試的時候一切順利筒占,就讓客戶那邊測試贪庙,測試發(fā)現(xiàn)報錯后log日志能傳上去,原文件一直傳不上去翰苫。我們用的FTP服務器是公司的止邮,客戶用的是他們自己搭的FTP服務器,所以我們就連了下客戶的FTP進行調(diào)試:
發(fā)現(xiàn)FTPClient.storeFile();這個方法返回了false奏窑,
跟進去發(fā)現(xiàn)連接模式為被動模式并且在創(chuàng)建服務器連接時這個ip地址是本地局域網(wǎng)ip导披,端口號也沒有。所以就想到了連接問題埃唯,找到__dataConnectionMode賦值的地方撩匕,確認應該使用enterLocalPassiveMode()這個方法。調(diào)用下FTPClient.enterLocalPassiveMode();放在FTPClient.storeFile()方法前面再次測試:
這次連接服務器的ip也變成了客戶服務器的ip墨叛,端口也新開了一個止毕,上傳文件成功模蜡。
https://mp.weixin.qq.com/s/7c4hYX2WoFaA2-fDBLmJAA