안녕하세요.. ^^
파일 업로드 찾다가 요기까지 왔네요.. ^^
샘플코드는 잘 봤습니다..
(샘플코드에 변수이름이 조금 잘못 되어 있는 부분이 있었습니다. - 큰문제는 아니죠.. ^^)
파일 업로드를 구현하면서 어려움(?)을 겪었던 부분과 해결 부분을 적어보려 합니다.
(저도 도움을 받았으니, 혹시나 저와 같은 어려움(?) 을 겪으신 분들을 위하여.. ^^)
* OS : Linux
* DB : Oracle
* WAS : OC4J 10g AS
/**
* form tag의 input name들이 아래와 같이 있습니다.
*/
String sMode = "";
String sPageNo = "";
String sKeyWord = "";
String sSearchPart = "";
String sSeqNum = "";
String sAnsTitle = "";
String sAnsContent = "";
String sFileName = "";
String sTmpFileName = "";
try {
//Multipart로 넘어왔는가?
if (FileUpload.isMultipartContent(req)) {
DiskFileUpload dfuUpload = new DiskFileUpload();
/**
* 이 부분 상당히 애를 먹었습니다.
* Windows 환경에서는 문제가 없는데,
* 개발 서버(Linux)로 올리게 되면 계속해서 한글이 깨지더군요.
*
* 그래서, 아래와 같이 DiskFileUpload의 HearderEncoding을 해주었습니다.
*/
dfuUpload.setHeaderEncoding("EUC_KR");
List lsItems = dfuUpload.parseRequest(req);
Iterator iterator = lsItems.iterator();
while (iterator.hasNext()) {
FileItem fItem = (FileItem) iterator.next();
/**
* 넘어오는 form이 multipart일때도 있고 아닐 경우도 있어서
* 처리한 부분입니다.
*
* HashMap을 사용해서 put한 다음에, 필요할때 꺼내 써도 무방할듯 합니다.
*/
if ("mode".equals(fItem.getFieldName())) {
sMode = fItem.getString();
} else if ("pageNo".equals(fItem.getFieldName())) {
sPageNo = fItem.getString();
} else if ("keyWord".equals(fItem.getFieldName())) {
//한글처리
sKeyWord = fItem.getString("EUC_KR");
} else if ("searchPart".equals(fItem.getFieldName())) {
sSearchPart = fItem.getString();
} else if ("seqNum".equals(fItem.getFieldName())) {
sSeqNum = fItem.getString();
} else if ("ansTitle".equals(fItem.getFieldName())) {
//한글처리
sAnsTitle = fItem.getString("EUC_KR");
} else if ("ansContent".equals(fItem.getFieldName())) {
//한글처리
sAnsContent = fItem.getString("EUC_KR");
}
//파일 타입 폼필드라면
if (!fItem.isFormField()) {
if (fItem.getSize() > 0) {
//파일 이름을 가져온다
//- 위에서 dfuUpload.setHeaderEncoding("EUC_KR")를 안해 줬더니
// 파일이름이 자꾸 깨지더군요.
sFileName = fItem.getName().substring(fItem.getName().lastIndexOf("\\") + 1);
try {
/**
* upload변수는 servlet에서 init 할때 아래와 같이 선언해 주었습니다.
* upload = config.getServletContext().getRealPath("/upload/suggest/");
*/
File file = new File(upload + sFileName);
fItem.write(file);
} catch (IOException e) {
System.out.println(e);
}
}
}
}
} else {
//multipart가 아닐때 사용되는 parameter들을 가지고 옴
//WebUtil은 null Check를 위한 util입니다. - 빼도 상관없습니다.
sMode = WebUtil.nvl((String) req.getParameter("mode"), "");
sPageNo = WebUtil.nvl((String) req.getParameter("pageNo"), "");
sKeyWord = WebUtil.nvl((String) req.getParameter("keyWord"), "");
sSearchPart = WebUtil.nvl((String) req.getParameter("searchPart"), "");
sSeqNum = WebUtil.nvl((String) req.getParameter("seqNum"), "");
sAnsTitle = WebUtil.nvl((String) req.getParameter("ansTitle"), "");
sAnsContent = WebUtil.nvl((String) req.getParameter("ansContent"), "");
}
} catch (Exception e) {
LogManager.getLogger("error").error(e.toString());
}
'프로그래밍 > JAVA, Servlet, JSP' 카테고리의 다른 글
java용 날짜 구하기 팁 (0) | 2009.10.14 |
---|---|
패키지에 대한 정의 (0) | 2009.10.14 |
Cannot create JDBC driver of class '' for connect URL 'null' (0) | 2009.10.12 |
[FileUpload] 다중 파일 업로드 (0) | 2007.11.27 |
[FileUpload] File 전송(jakarta FileUpload API) (0) | 2007.11.27 |