用Apache的FTPClient上傳文件時發現一個問題,就是上傳txt文件沒問題,但上傳zip文件時文件會被破壞,查了一下原因,原來是這樣:
因爲RFC959中規定了缺省的傳輸模式應該是ASCII的,org.apache.commons.net.ftp.FTPClient實現也遵守此標準。所以org.apache.commons.net.ftp.FTPClient在缺省情況下是按ASCII形式進行傳輸的,如果你是傳輸的BINARY二進制文件(如zip),那麼上傳完後的文件就會被破壞,但是傳輸ASCII文件(如txt)是沒有問題的。
所以如果你是傳輸的BINARY二進制文件的話,就需要在建立連接、登陸後,接下來設置文件類型,代碼示例如下:
ftpclient.connect(host);
ftpclient.login(user, password);
ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);