this.ftpClient.storeFile(fileName, inStream) 方法執行時無反應,最後提示錯誤服務器
緣由:代碼中加了多了一個設置 this.ftpClient.enterLocalPassiveMode(); //將傳輸模式設置成被動,這種狀況若是服務器沒有作特殊設置的話是正常的,如今去掉這個設置,就能夠正常上傳文件了。this
具體採用什麼樣的傳輸方式,跟服務器設置有關。把從網上搜到的FTP上傳主動和被動模式介紹放在下邊:
一個完整的FTP文件傳輸須要創建兩種類型的鏈接,一種爲文件傳輸下命令,稱爲控制鏈接,另外一種實現真正的文件傳輸,稱爲數據鏈接。spa
客戶端但願與FTP服務器創建上傳下載的數據傳輸時,它首先向服務器的TCP 21端口發起一個創建鏈接的請求,FTP服務器接受來自客戶端的請求,完成鏈接的創建過程,這樣的鏈接就稱爲FTP控制鏈接。ftp
FTP控制鏈接創建以後,便可開始傳輸文件,傳輸文件的鏈接稱爲FTP數據鏈接。FTP數據鏈接就是FTP傳輸數據的過程,它有兩種傳輸模式
PORT(主動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:「我打開了XXXX端口,你過來鏈接我」。因而服務器從20端口向客戶端的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。
PASV(被動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:「我打開了XXXX端口,你過來鏈接我」。因而客戶端向服務器的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。file