FileInputStream fis = null;
File sendFile = null;
FTPClient ftp = new FTPClient();
ftp.connect( "접속URL 또는 IP" ); // FTP연결
boolean bool = ftp.login( "사용자ID", "패스워드" ); // 인증
if (!bool) {
throw new Exception( "FTP서버 접속에 실패했습니다.");
}
ftp.changeWorkingDirectory( "FTP서버의 작업 디렉토리 설정 ROOT" );
ftp.setFileType(FTP.BINARY_FILE_TYPE); // 바이너리 타입으로 전송
sendFile = new File(p_FileFullPath);
String fileName = p_FileFullPath.substring(p_FileFullPath.lastIndexOf("/")+1);
fis = new FileInputStream(sendFile);
boolean result = ftp.storeFile("FTP서버의 작업 디렉토리 설정 ROOT" + "/" + fileName, fis);
if (!result) {
throw new Exception( "FTP서버에 파일 전송에 실패했습니다.");
}
} catch(IOException ioe) {
return false;
} finally {
try {
fis.close();
}catch(Exception e) {}
sendFile.delete(); // 첨부한 파일 삭제. [삭제해야 할경우]
try {
ftp.disconnect(); // FTP 연결을 끊는다.
}catch(Exception e) {}
}
참고자료~
Commons net
I. Commons net
Jakarta Commons의 net은 network utility collection입니다.
인터넷 프로토콜을 대부분지원하는 강력한 유틸리티로 사용이 쉽고 간결합니다.
클라이언트측의 기본적인 Internet protocol을 구현함으로서 고차원적인 abstract가 아닌 기본적인 프로토콜 access가 목적이기 때문에 부분적으로 object-orient 규칙에 위배되는 사항이 있다는것을 참고적으로 알자
Commons net이 지원하는 프로토콜은 다음과 같다
- FTP
- NNTP
- SMTP
- POP3
- Telnet
- TFTP
- Finger
- Whois
- rexec/rcmd/rlogin
- Time (rdate) and Daytime
- Echo
- Discard
- NTP/SNTP
FTP의 경우 이전에는 sun 패키지의 FtpClient를 사용했지만 이제는 Commons net의 FTP를 사용해 봅시다
II. 준비물~
Commons net은 자체적으로 ORO를 사용합니다
Jakarta ORO란 파일이름의 치환, 분할, 필터링 등을 수행하기 위한 Perl5 호환 정규식, AWK와 같은 정규식, glob 표현, 그리고 유틸리티 클래스들을 제공하는 텍스트 처리 자바 클래스들입니다
Commons net http://jakarta.apache.org/site/downloads/downloads_commons-net.cgi
Jakarta ORO http://jakarta.apache.org/site/downloads/downloads_oro.cgi
참고자료
Commons net API http://jakarta.apache.org/commons/net/apidocs/index.html
Commons net http://jakarta.apache.org/commons/net/
III. org.apache.commons.net.ftp 의 흐름
sun 패키지의 FTPClient처럼 FTP여러 동작을 Commons net의 FTPClient로 구현해 보자
다음 ① ~ ⑦까지 목록은 필수항목으로 구현되어야 합니다.
논리적으로 보면 간단합니다
IV. 사용예제 - 목록보기
본격적으로 FTP에 접속하여 목록을 가져오는 소스를 봅시다
목록보기 방법에는 한가지 방법이 더 있습니다
위의 코드는 해당 디렉토리내의 모든 파일을 가져오는 방법이며 다음 방법은 해당 디렉토리의 모든 파일을 정해진 수로 짤라 가져오는 방법이 있습니다.
위의 빨간색 코드대신 다음 코드가 들어갈 수 있습니다.
V. 사용예제 - get (파일 다운로드)
서버의 /public/테스트.txt 파일을 클라이언트의 C:\\Test\\테스트.txt 에 다운받는 예제
VI. 사용예제 - put(파일 업로드)
클라이언트의 C:\\Test\\보내자.txt 파일을 서버의 /public/보내자.txt 에 업로드하는 예제
만일 서버에 이미 /public/보내자.txt 파일이 있다면 덮어쓰게 된다
VII. 사용예제 - append (파일업로드)
위의 예제와 같은 기능을 하지만 이미 파일에 동일한 파일이 있으면 false를 반환하면서 실행하지 않는다
VIII. 사용예제 - rename (파일 이름변경)
변경전 파일명과 변경할 파일명을 파라미터로 준다
IX. 사용예제 - delete (파일삭제)
삭제할 파일을 선택한다
X. 사용예제 - directory 생성
/public 에 oops 디렉토리를 생성한다
XI. 사용예제 - OS 커맨드 입력하기
/public 에 oops 디렉토리를 생성한다
sendCommand 함수에 FTPCommand의 실행할 OS명령을 static 멤버변수를 넘겨준다
XII. 사용예제 - 작업디렉토리 설정하기
작업디렉토리를 /public 설정한 후 oops 디렉토리를 설정한다 (위의 예제와 비교해보라!)
XIII. 사용예제 - 파일 및 전송형태 설정
파일 형태 설정
파일 타입
FTP.BINARY_FILE_TYPE, FTP.ASCII_FILE_TYPE, FTP.EBCDIC_FILE_TYPE, FTP.IMAGE_FILE_TYPE , FTP.LOCAL_FILE_TYPE
이 값을 설정하지 않으면 디폴트는 ASCII 이다
전송 형태 설정
전송 타입
FTP.BLOCK_TRANSFER_MODE, FTP.COMPRESSED_TRANSFER_MODE
이값을 설정하지 않으면 디폴트는 FTP.STREAM_TRANSFER_MODE 이다
XIV. FTP접속시 글목록이 보이지 않는경우 아래 URL을 참고하세요
Jakarta Commons Net 에서 FTP 사용시 목록이 안보일 경우
http://www.jakartaproject.com/article/jakarta/1132032615162
목록이 안보일 경우 해결기 I탄
http://www.jakartaproject.com/article/jakarta/1135307924491
테스트한 파일을 첨부합니다 ^^
=============================================
본문서는 자유롭게 배포/복사 할수 있지만
이문서의 저자에 대한 언급을 삭제하시면 안됩니다
저자 : GoodBug (unicorn@jakartaproject.com)
최초 : http://www.jakartaproject.com
=============================================
아래는 네이버 툰 ㅡㅡ 별게 다되는군 -_-;;
No comments:
Post a Comment