問題背景:
最近做ftp對接的需求,檔案下載下傳下來後,打開提示檔案損壞。直接用ftp指令登入下載下傳下來的檔案就沒問題。說明是java程式的問題。百度一下很快就找到了解決方案。
解決方案:
在下載下傳或上傳檔案之前,設定檔案編碼類型為二進制檔案,問題解決。(我是放在ftpclient初始化的時候就設定好)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
補充姿勢:
common-net的ftpclient預設是使用ASCII_FILE_TYPE,檔案會經過ASCII編碼轉換,是以可能會造成檔案損壞。是以我們需要手動指定其檔案類型為二進制檔案,屏蔽ASCII轉換的操作,避免檔案在轉換的過程中受損。
下面是common-net 3.6 的API對這兩種檔案格式的說明
common-net 3.6 API位址:http://commons.apache.org/proper/commons-net/apidocs/