伺服器上下載檔案FTP
具體分為分為兩個步驟走
我傳入的地址格式為//127.0.0.1//test/aa.gif
- 連結,根據IP,埠號(預設埠號可不填),使用者名稱密碼登入
public static FTPClient getFTPClient(NASVo vo) {
FTPSClient ftp = new FTPSClient();
try {
ftp.setAutodetectUTF8(true);
ftp.setDataTimeout(6000000); //設定傳輸超時時間為6000秒
ftp.setConnectTimeout(6000000);
ftp.connect(vo.getApi());
// 如果採用預設埠,可以使用ftp.connect(host)的方式直接連線FTP伺服器
ftp.login(vo.getName(), vo.getPassword());// 登入
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
logger.error("使用者名稱或密碼錯誤;");
ftp.disconnect();
} else {
logger.info("連線成功");
}
} catch (SocketException e) {
logger.error("檢查IP地址是否正確",e);
} catch (IOException e) {
logger.error("檢查埠是否正確}",e);
}
return ftp;
}
- 為防止檔名和路徑中文亂碼,設定編碼進行下載
//下載
public List<String> downloadFtpFileOld(String ftpPath, String localPath, String fileName, NASVo vo) {
FTPClient ftpClient = null;
List<String> list = new ArrayList<>();
try {
ftpClient = getFTPClient(vo);
ftpClient.setControlEncoding("UTF-8"); // 中文支援
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand(
"OPTS UTF8", "ON"))) {// 開啟伺服器對UTF-8的支援,如果伺服器支援就用UTF-8編碼,否則就使用本地編碼(GBK).
LOCAL_CHARSET = "UTF-8";
}
ftpClient.setControlEncoding(LOCAL_CHARSET);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
ftpPath = "/" + ftpPath;
ftpClient.changeWorkingDirectory(ftpPath);
fileName = fileName.substring(0, fileName.lastIndexOf("."));
//之前配置了正式路徑的nginx靜態檔案,所以我返回了地址
//127.0.0.1替換成正式路徑的地址
list.add("http://127.0.0.1/test/"+fileName + ".gltf");
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
String fileNames = file.getName();
if (fileNames.contains(fileName)) {
File localfile = new File(localPath + "/" + fileNames);
FileOutputStream output = new FileOutputStream(localfile);//建立localfile檔案
boolean aa = ftpClient.retrieveFile(fileNames, output);//從ftp伺服器中檢索檔案,寫入FileOutputStream中(只能寫入FileOutputStream)
System.out.println("是否下載成功"+aa);
if (output != null) {
output.close();
}
}
}
} catch (FileNotFoundException e) {
logger.error("沒有找到{}檔案", localPath + "-----" + File.separatorChar + "-----" + fileName, e);
} catch (SocketException e) {
logger.error("連線FTP失敗。", e);
} catch (IOException e) {
logger.error("檔案讀取錯誤。", e);
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
return list;
}
相關文章
- ftp下載指定檔案FTP
- FTP檔案傳輸伺服器原理FTP伺服器
- 檔案伺服器之二:FTP伺服器(pureftp)伺服器FTP
- Linux 如何從網上下載檔案Linux
- Java上傳檔案到ftp伺服器JavaFTP伺服器
- 從ftp上傳下載檔案(二)FTP
- 從ftp上傳下載檔案(一)FTP
- Centos7下搭建FTP檔案伺服器CentOSFTP伺服器
- Java實現FTP跨伺服器檔案操作JavaFTP伺服器
- FTP 傳送檔案到遠端伺服器FTP伺服器
- 配置crontab+ftp自動下載檔案FTP
- Centos6.5部署ftp檔案伺服器CentOSFTP伺服器
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- C# FTP上傳檔案至伺服器程式碼C#FTP伺服器
- 關於為什麼要在專案中使用FTP檔案伺服器FTP伺服器
- FTP自動下載並解壓縮檔案指令碼FTP指令碼
- PHP ftp上傳檔案PHPFTP
- FTP檔案共享服務FTP
- FileZilla 向伺服器傳檔案或下載檔案伺服器
- ftp上傳工具下載,ftp上傳工具下載使用教程,Linux如何配置ftp伺服器?FTPLinux伺服器
- 基於滴滴雲主機搭建 FTP 檔案共享伺服器(一)FTP伺服器
- python寫的FTP簡單上傳下載檔案薦PythonFTP
- c# 上傳FTP檔案C#FTP
- 常見的ftp檔案傳輸工具有哪些?推薦ftp檔案傳輸工具FTP
- 如何在命令列中使用 ftp 命令上傳和下載檔案命令列FTP
- 伺服器FTP工具,Windows伺服器FTP工具伺服器FTPWindows
- 簡單好用的ftp檔案傳輸工具:Viper FTP for MacFTPMac
- SSIS 學習之旅 FTP檔案傳輸-FTP控制元件FTP控制元件
- Raysync檔案傳輸協議(FTP)協議FTP
- 利用ftp自動上傳檔案FTP
- 使用ftp自動傳輸檔案FTP
- 填報表上下載檔案控制元件可寫許可權控制控制元件
- 定時ftp上傳,如何設定定時ftp上傳檔案FTP
- Win10怎麼搭建FTP伺服器區域網內傳輸檔案Win10FTP伺服器
- 用FTP自動傳送檔案(轉)FTP
- [原始碼和文件分享]基於WinInet的FTP檔案下載實現原始碼FTP
- J2SE - Commons-net包Ftp下載的檔案不能開啟FTP
- 建立ftp伺服器FTP伺服器