이번에 Tomcat에서 호스팅 받고 확인해 보니 FTP 서버로 이미지 파일을 불러올 수 있다고 봐서
Spring에서 FTP File Upload를 진행해 보았습니다.
우선 Spring에서 FTP로 File을 보내기 위해서는 pom.xml에 아래 의존성을 추가해주어야 한다.
pom.xml
더보기
<!-- Apache Commons Net -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.10.0</version> <!-- 맞는 버전을 사용해주세요. -->
</dependency>
의존 주입이 완료되었다면 이제 FTP File을 연결하고 Upload 를 진행해보자.
Test FTP File Upload
변수 선언
String ftpServer = "FTP 서버";
int port = 21;
String username = "FTP 접속 아이디";
String password = "FTP 접속 비밀번호";
//업로드를 하기 위해 파일 이름을 받아옵니다.
String localFileName = file.getOriginalFilename();
// FTP 서버 초기 주소
String ftpFilePath = "/www/";
// 이미지가 업로드될 주소를 지정
String createFolder = "images/";
// 두 주소를 합쳐줍니다.
String folderPath = ftpFilePath+createFolder;
연결 및 업로드
ftpClient.connect(ftpServer,port);
log.error("ftpClient connect");
//연결 여부를 확인하고 연결 되어있다면
if(ftpClient.isConnected()){
log.error("연결 성공");//로그 확인
//login 진행
if(!ftpClient.login(username, password))log.error("ftpClient login Fail");
log.error("ftpClient login");
//폴더 추가
if(!ftpClient.makeDirectory(folderPath))log.error("ftpClient makeDirectory ROOT/test Fail");
//최종 파일 위치 확인용 로그
System.out.println("FTP FilePath ["+folderPath+"]");
//파일 타입 지정
if(!ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE))log.error("ftpClient setFileType Fail");
//파일 데이터 전송을 위한 임시 포트 생성
//ftpClient.enterLocalActiveMode(); 서버에 전송할 데이터 방화벽 설정이 되어있다면 연결을 못할 수 있다.
ftpClient.enterLocalPassiveMode();
log.error("ftpClient enterLocalPassiveMode");
//ftp server 에 파일 적용
if(!ftpClient.storeFile(folderPath+localFileName,file.getInputStream()))log.error("ftpClient storeFile Fail");
//ftp server 로그아웃
if(!ftpClient.logout())log.error("ftpClient logout Fail");
FTPFile[] files = ftpClient.listFiles(folderPath);
System.out.println("현재 ftp 서버 파일 개수 ["+files.length+"]");
//ftp 연결 종료
ftpClient.disconnect();
}
} catch (IOException e) {
log.error("파일 입출력 문제 발생");
log.error(e.getMessage());
}
FTPClient 메서드
1. 연결 및 로그인 메서드
더보기
ftpClient.setSoTimeout(2000);//무한 대기를 막기위해 2초 타임아웃 설정
ftpClient.connect("ftp 서버 주소"); // FTP 서버에 연결
ftpClient.login("ftp 아이디", "ftp 비밀번호"); // FTP 서버에 로그인
2. 파일 업로드
더보기
InputStream input = new FileInputStream(new File("test.txt")
ftpClient.storeFile("ftp 저장할 파일 주소", input)
3. 파일 다운로드
더보기
OutputStream output = new FileOutputStream
ftpClient.retrieveFile("ftp 다운받을 파일", output[ex저장받을 폴더 위치]);
4. 디렉토리 관리
더보기
ftpClient.makeDirectory("test"); // 새로운 디렉토리 생성
ftpClient.changeWorkingDirectory("/test"); // 작업 디렉토리 변경
ftpClient.removeDirectory("test"); // 기존 디렉토리 삭제
5. 파일 삭제
더보기
ftpClient.deleteFile("test.txt"); // 파일 삭제
6. 파일 or 디렉토리 목록 확인
더보기
FTPFile[] files = ftpClient.listFiles(); // 현재 디렉토리의 파일 목록
7. 로그아웃 및 연결 종료
더보기
ftpClient.logout(); // 로그아웃
ftpClient.disconnect(); // 연결 종료
728x90
'추가 공부 > Web' 카테고리의 다른 글
[Spring] Lombok 정리 (4) | 2024.10.27 |
---|---|
[Spring] @RequestBody Vs @RequestPart Vs @RequestParam Vs @ModelAttribute 차이점 (0) | 2024.10.24 |
Chart.js 적용법과 특징 (2) | 2024.10.04 |
Spring boot 사전 지식 채우 (2) | 2024.09.29 |
CKEditor5 사용해보기 2 (1) | 2024.09.17 |