You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
package com.ynxbd.common.helper.common;
|
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.io.IOUtils;
|
|
import org.apache.commons.net.ftp.FTP;
|
|
import org.apache.commons.net.ftp.FTPClient;
|
|
import org.apache.commons.net.ftp.FTPFile;
|
|
|
|
import java.io.*;
|
|
|
|
/**
|
|
* @author 李进才
|
|
* @ClassName FtpHelper
|
|
* @Description description
|
|
* @date 2023/3/21 15:34
|
|
*/
|
|
@Slf4j
|
|
@AllArgsConstructor
|
|
public class FtpHelper {
|
|
|
|
private final String server;
|
|
private final Integer port;
|
|
private final String user;
|
|
private final String pass;
|
|
|
|
|
|
public byte[] getFile(String path){
|
|
FTPClient ftpClient = new FTPClient();
|
|
ftpClient.setConnectTimeout(60*000); //连接超时为60秒
|
|
ftpClient.setControlEncoding("utf-8");
|
|
ftpClient.enterLocalPassiveMode();
|
|
try {
|
|
ftpClient.connect(server);
|
|
ftpClient.login(user, pass);
|
|
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
|
|
log.info("[FTP]登陆成功");
|
|
FTPFile ftpFile = ftpClient.mlistFile(path);
|
|
if (ftpFile != null) {
|
|
log.info("[FTP]读取到文件:{}",ftpFile.getName());
|
|
InputStream inputStream = ftpClient.retrieveFileStream(path);
|
|
byte[] fileData = IOUtils.toByteArray(inputStream);
|
|
return fileData;
|
|
} else {
|
|
log.error("[FTP]读取共享文件失败 路径---{}",path);
|
|
}
|
|
ftpClient.logout();
|
|
ftpClient.disconnect();
|
|
|
|
} catch (IOException ex) {
|
|
log.error("[FTP]ftp连接失败");
|
|
ex.printStackTrace();
|
|
} finally {
|
|
if (ftpClient.isConnected()) {
|
|
try {
|
|
ftpClient.disconnect();
|
|
} catch (IOException ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|