EEALL@ONCE
☕FTP 서버에 파일을 업로드 본문
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FTPUploader {
public static boolean uploadFile(String server, int port, String username, String password, String remoteDirectory, String remoteFileName, String localFilePath) {
FTPClient ftpClient = new FTPClient();
InputStream inputStream = null;
try {
ftpClient.connect(server, port);
ftpClient.login(username, password);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
inputStream = new FileInputStream(localFilePath);
// 원격 디렉토리로 이동 (없는 경우 생성됩니다)
boolean directoryCreated = ftpClient.makeDirectory(remoteDirectory);
if (directoryCreated) {
System.out.println("원격 디렉토리 생성: " + remoteDirectory);
}
// 파일을 원격 서버에 업로드
boolean uploaded = ftpClient.storeFile(remoteDirectory + remoteFileName, inputStream);
if (uploaded) {
System.out.println("파일 업로드 성공!");
} else {
System.out.println("파일 업로드 실패!");
}
return uploaded;
} catch (IOException e) {
e.printStackTrace();
return false;
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
위의 코드는 FTP 서버에 파일을 업로드하기 위한 Java 클래스인 `FTPUploader`를 구현한 것입니다. 각 메서드와 변수에 대한 설명은 다음과 같습니다:
1. `uploadFile` 메서드:
- 이 메서드는 FTP 서버에 파일을 업로드하는 역할을 합니다.
- 파라미터로 FTP 연결 및 업로드에 필요한 정보를 받습니다.
- `server`: FTP 서버 주소 (예: "ftp.example.com")
- `port`: FTP 포트 번호 (일반적으로 21)
- `username`: FTP 계정 사용자 이름
- `password`: FTP 계정 비밀번호
- `remoteDirectory`: 원격 디렉토리 경로 (파일을 업로드할 위치)
- `remoteFileName`: 업로드할 원격 파일 이름
- `localFilePath`: 로컬 파일 경로 (업로드할 파일의 경로)
- FTP 연결, 로그인, 파일 전송, 디렉토리 생성, 로그아웃, 연결 종료 등의 작업을 수행합니다.
- 파일 업로드 성공 여부를 불리언 값으로 반환합니다.
2. `FTPClient`:
- `FTPClient` 클래스는 Apache Commons Net 라이브러리에서 제공하는 FTP 클라이언트입니다. FTP 서버와의 통신을 관리하는 핵심 클래스입니다.
- FTP 서버와의 연결, 파일 전송, 디렉토리 생성 등을 처리하는데 사용됩니다.
3. `InputStream`:
- `InputStream`은 파일을 읽기 위한 바이트 스트림입니다. `FileInputStream`을 사용하여 로컬 파일을 읽어옵니다.
4. `try-catch-finally` 블록:
- 코드에서 예외 처리를 위한 블록입니다.
- FTP 연결, 파일 입출력 등에서 예외가 발생할 수 있으므로 이를 적절하게 처리합니다.
이 코드는 FTP 서버로 파일을 업로드하기 위한 편리한 클래스를 제공하며, 원격 서버의 디렉토리를 생성하고 파일을 업로드하는 과정을 자세히 다루고 있습니다. 위의 코드를 호출하면 FTP 업로드 작업을 쉽게 수행할 수 있습니다.
public class YourClass {
private void convertToExcelClcFile(List<KtRcvClctAgncyRmnyDto> ktRcvClctPymCReport, List<KtRcvClctAgncyRmnyDto> ktRcvClctAgncyRmnyPymSDtos, HashMap infoDate, String filePath) throws FileNotFoundException {
// Excel 파일 생성 코드 (이미 존재)
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fileOutputStream = new FileOutputStream(filePath)) {
// Excel 파일 저장 코드 (이미 존재)
// FTP 업로드 메소드 호출
String server = "ftp.example.com"; // FTP 서버 주소
int port = 21; // FTP 포트 (일반적으로 21)
String username = "your_username"; // FTP 계정 사용자 이름
String password = "your_password"; // FTP 계정 비밀번호
String remoteDirectory = "/remote/directory/"; // 원격 디렉토리 경로
String remoteFileName = "uploaded-file.xlsx"; // 업로드할 원격 파일 이름
boolean uploaded = FTPUploader.uploadFile(server, port, username, password, remoteDirectory, remoteFileName, filePath);
if (uploaded) {
System.out.println("Excel 파일 업로드 성공!");
} else {
System.out.println("Excel 파일 업로드 실패!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
'언어💻 > 자바☕' 카테고리의 다른 글
☕ 클래스 - static 이란? (0) | 2023.10.16 |
---|---|
☕ 인스턴스란(객체)? (0) | 2023.10.16 |
☕Calendar calendar (0) | 2023.09.05 |
☕final (0) | 2023.09.01 |
☕`Path filePath`와 `File file = filePath.toFile() (0) | 2023.08.31 |