伺服器上下載檔案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伺服器
- Java上傳檔案到ftp伺服器JavaFTP伺服器
- Linux 如何從網上下載檔案Linux
- Java實現FTP跨伺服器檔案操作JavaFTP伺服器
- Centos7下搭建FTP檔案伺服器CentOSFTP伺服器
- 配置crontab+ftp自動下載檔案FTP
- windows下ftp定時執行批次下載檔案,windows下ftp定時執行批次下載檔案的一種方法WindowsFTP
- PHP ftp上傳檔案PHPFTP
- FTP檔案共享服務FTP
- ftp上傳工具下載,ftp上傳工具下載使用教程,Linux如何配置ftp伺服器?FTPLinux伺服器
- 基於滴滴雲主機搭建 FTP 檔案共享伺服器(一)FTP伺服器
- Linux檔案共享(FTP+NFS)LinuxFTPNFS
- 常見的ftp檔案傳輸工具有哪些?推薦ftp檔案傳輸工具FTP
- 向web伺服器下載檔案Web伺服器
- 簡單好用的ftp檔案傳輸工具:Viper FTP for MacFTPMac
- 如何在命令列中使用 ftp 命令上傳和下載檔案命令列FTP
- Raysync檔案傳輸協議(FTP)協議FTP
- ftp上直接修改檔案內容FTP
- 定時ftp上傳,如何設定定時ftp上傳檔案FTP
- 伺服器FTP工具,Windows伺服器FTP工具伺服器FTPWindows
- [原始碼和文件分享]基於WinInet的FTP檔案下載實現原始碼FTP
- J2SE - Commons-net包Ftp下載的檔案不能開啟FTP
- 填報表上下載檔案控制元件可寫許可權控制控制元件
- Linux基礎命令---mget獲取ftp檔案LinuxFTP
- Linux基礎命令---get獲取ftp檔案LinuxFTP
- Linux基礎命令---mput上傳ftp檔案LinuxFTP
- Windows 機器通過 FTP 上傳檔案WindowsFTP
- FTP上傳檔案速度太慢怎麼辦?FTP
- wing ftp server(ftp伺服器軟體)FTPServer伺服器
- 建立ftp伺服器FTP伺服器
- 檔案流下載檔案,zip/其他格式檔案
- Ubuntu上ftp的vsftpd.conf檔案的配置UbuntuFTP
- 如何在伺服器環境中上傳下載檔案伺服器
- netty系列之:搭建自己的下載檔案伺服器Netty伺服器
- ftp下載工具,ftp下載工具哪個好用,如何使用?FTP
- 檔案下載
- 檔案系統 FTP Ubuntu 安裝入門介紹FTPUbuntu
- socket實現簡單傳檔案ftp/scp服務FTP