일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 옴니아2
- XP 설치
- 윈도우 7
- PDA
- 이클립스
- HP 신제품
- 삼성 메모리
- DDos 전용 백신
- 한메일 smtp
- 파워블로그
- 이클립스 설정
- 오좀니아
- php
- Ajax
- HP
- Live Mesh
- IE8
- 오즈 옴니아
- VMwareTools
- 한메일 pop
- 이클립스 플러그인
- VMware
- Internet Explorer 8
- Windows 7
- 한메일
- USB 레지스트리
- 파블애드
- ddos
- IE 8
- jQuery
- Today
- Total
엉망진창
자바<JAVA> 아파치(APACHE) 오픈소스 COMMONS NET 이용하여 FTP파일업로드 하기 본문
http://blog.naver.com/lover4908/110072552163
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class Util {
public static final void simpleSendFileToFTP(String targetUrl, String id,
String pwd, String port, String realSaveLocation, File file)
throws Exception {
FTPClient client = null;
BufferedInputStream bis = null;
try {
client = new FTPClient();
/*
* FTPClientConfig config = new FTPClientConfig();
* config.setServerLanguageCode("ko");
* config.setDefaultDateFormatStr("MM월 d일 HH:mm");
* config.setRecentDateFormatStr("MM웡 d일 HH:mm");
* client.configure(config);
*/
client.setControlEncoding("euc-kr");
client.connect(targetUrl, Integer.parseInt(port));
int resultCode = client.getReplyCode();
if (FTPReply.isPositiveCompletion(resultCode) == false) {
throw new Exception("FTP 서버에 연결할 수 없습니다.");
} else {
client.setSoTimeout(5000);
boolean isLogin = client.login(id, pwd);
if (isLogin == false) {
throw new Exception("FTP 서버에 로그인 할 수 없습니다.");
}
client.setFileType(FTP.BINARY_FILE_TYPE);
String[] locArr = realSaveLocation.split("/");
String savaLoc = "";
for (int i = 0; i < locArr.length; i++) {
savaLoc = savaLoc + locArr[i] + "/";
client.makeDirectory(savaLoc);
}
bis = new BufferedInputStream(new FileInputStream(file));
boolean isSuc = client.storeFile(savaLoc + file.getName(), bis);
// System.out.println("파일 전송 성공여부 : "+isSuc);
if (isSuc == false) {
throw new Exception("파일 업로드에 실패 하였습니다.");
}
/*
* FTPFile[] list = client.listFiles(); for(int i=0 ;
* i<list.length ; i++) { try{
* System.out.println(list[i].toString()); }catch (Exception e)
* { } }
*/
client.logout();
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (bis != null) {
try {
bis.close();
} catch (Exception e) {
}
}
if (client != null && client.isConnected()) {
try {
client.disconnect();
} catch (Exception e) {
}
}
}
}
}
simpleSendFileToFTP(String targetUrl , String id , String pwd , String port , String realSaveLocation , File file) 메소드 원형이 다음과 같습니다.
targetUrl <-- FTP 주소
id <-- 사용자 아이디
pwd <-- 사용자 패스워드
port <-- FTP 포트입니다. 일반적으로 21을 사용할겁니다??
realSaveLocation <-- FTP 서버에 저장되어야 할 경로입니다.
file <-- 업로드할 로컬파일의 경로입니다. 파일객체조
사용하실때는 예를 들어서
Util.simpleSendFileToFTP("127.0.0.1" , "User" , "Password" , "21" , "/doc/data/2009/10" , new File("c:/data/01/test.xls"))
이런식으로 사용하시면 됩니다.
혹시 실제 FTP의 저장될 경로의 폴더가 모두 존재하지 않을경우에 자동으로 생성하게 했습니다.
API중에 makeDirectory() 이녀석이 폴더를 생성하게 해주는데요. 상위폴더가 없으면 생성을 못하더군요. 그래서 문자열 / 을 구분자로 짤라서 상위부터 하나씩 생성하게 했습니다.
어렵고 복잡한게 싫어서 최대한 간단하게 개발하려고 해서 이런저런 설정하는 부분들은 다 빼버리고 했는데 , 저의 경우는 잘 동작하는군요.
혹시 FTP에 접속해서 파일 리스트를 받으려고 하시는 분중에 접속 및 로그인 다되는데 파일리스트만 가져오지를 못하는 경우가 있습니다.
이는 파일리스트 가져온 결과값에 한글이 포함되어 있으면 , 아파치 NET이 이 한글을 파싱하는 과정에서 오류가 발생해서 리스트를 가져오지 못합니다. 이 부분을 해결할려면 제가 주석으로 막아놓은 부분을 적용해보시기 바립니다.
/*
FTPClientConfig config = new FTPClientConfig();
config.setServerLanguageCode("ko");
config.setDefaultDateFormatStr("MM월 d일 HH:mm");
config.setRecentDateFormatStr("MM웡 d일 HH:mm");
client.configure(config);
*/
이 부분입니다.
/*
FTPFile[] list = client.listFiles();
for(int i=0 ; i<list.length ; i++) {
try{
System.out.println(list[i].toString());
}catch (Exception e) {
}
}
*/
이 부분은 리스트 테스트 하는 부분이구요.
사실 위에 부분은 파일 업로드하는 것하고 밀접한 관계는 없으나 , 저처럼 접속잘되고 로그인 잘되고 업로드 다운로드 다 잘되는데 , 리스트를 가져오기 못하는 굉장히 당혹스러움을 경험해 무한삽질에 빠지는데 도움이 될까하여 남겼습니다.
파일 다운로드 처럼 , 위에것을 사용하려면 jar 파일 2개가 필요합니다. 업로드 할테니 다운받으세요.
최신것을 받으시려면 아파치 사이트 들어가서 받으셔요.
여기로 들어가시면 됩니다.
저포함 모든 생계형 개발자님들... 칼퇴해서... 여가생활 즐깁시다 --;;
[출처] 자바<JAVA> 아파치(APACHE) 오픈소스 COMMONS NET 이용하여 FTP파일업로드 하기|작성자 달빛
'Study_Web > JSP' 카테고리의 다른 글
Jeus 에서 local hostname을 컴퓨터 이름으로 인식하는 경우 확인 할것. (0) | 2011.09.16 |
---|---|
VMWare에서 Tomcat 이 자꾸 사망하시는 경우 (0) | 2011.07.22 |
log4sql (0) | 2010.02.18 |
[번역] Don't Use System.out.println! Use Log4j (0) | 2009.01.29 |
JSEclipse 플러그인 (0) | 2008.10.30 |