java上傳文件到ftp,能創建目錄,但文件不能寫入(FTPClient.enterLocalPassiveMode()的用法)

問題描述

之前在寫文件上傳到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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章