????????上周給河北一客戶(hù)做一個(gè)數(shù)據(jù)導(dǎo)入功能,報(bào)錯(cuò)后將錯(cuò)誤log日志及報(bào)錯(cuò)的文件上傳到FTP上,方便追溯。用的jdk1.6,在網(wǎng)上找了個(gè)jar包,本地測(cè)試的時(shí)候一切順利,就讓客戶(hù)那邊測(cè)試,測(cè)試發(fā)現(xiàn)報(bào)錯(cuò)后log日志能傳上去,原文件一直傳不上去。我們用的FTP服務(wù)器是公司的,客戶(hù)用的是他們自己搭的FTP服務(wù)器,所以我們就連了下客戶(hù)的FTP進(jìn)行調(diào)試:
發(fā)現(xiàn)FTPClient.storeFile();這個(gè)方法返回了false,
跟進(jìn)去發(fā)現(xiàn)連接模式為被動(dòng)模式并且在創(chuàng)建服務(wù)器連接時(shí)這個(gè)ip地址是本地局域網(wǎng)ip,端口號(hào)也沒(méi)有。所以就想到了連接問(wèn)題,找到__dataConnectionMode賦值的地方,確認(rèn)應(yīng)該使用enterLocalPassiveMode()這個(gè)方法。調(diào)用下FTPClient.enterLocalPassiveMode();放在FTPClient.storeFile()方法前面再次測(cè)試:
這次連接服務(wù)器的ip也變成了客戶(hù)服務(wù)器的ip,端口也新開(kāi)了一個(gè),上傳文件成功。
https://mp.weixin.qq.com/s/7c4hYX2WoFaA2-fDBLmJAA