問題描述
之前在寫文件上傳到ftp服務器的java代碼時,發現創建目錄各項操作均正常,但在寫入文件時無論如何都寫入不進去,文件可以創建成功,無始終是0字節,論是通過FTPClient的storeFile還是通過輸出流寫入,都不起作用,後來發現是 數據連接模式的問題即:enterLocalPassiveMode()
FTPClient的數據傳輸模式enterLocalPassiveMode()
當在客戶端和服務器之間進行數據傳輸時需使用該方法,啓用該方法後,客戶端在打開數據連接之前會向服務器發出PASV(或EPSV)命令,通知服務器將打開客戶端鏈接到的數據端口來進行數據傳輸。
解決方式
即解決該問題的方式則是在FTPClient連接服務器成功後,設定爲客戶端對服務器的數據傳輸模式
FTPClient ftp = new FTPClient();
ftp.connect(host,port);
ftp.login(user,passWord);
ftp.enterLocalPassiveMode()
ftp.storeFile(reomte,InputStream);