- 필요한 Jar 파일
- 파일업로드 클래스(MultiPart.java)
package com.util;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class MultiPart {
List items; // 입력 데이타 항목들로 구성된
/* 생성자 */
public MultiPart(HttpServletRequest request) throws Exception {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
items = upload.parseRequest(request);
}
/* 주어진 이름에 해당하는 데이터 값을 리턴하는 메서드 */
public String getParameter(String fieldName) throws UnsupportedEncodingException {
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem) items.get(i);
if (item.getFieldName().equals(fieldName))
return item.getString("UTF-8");
}
return null;
}
/* 주어진 이름에 해당하는 업로드 파일의 경로명을 리턴하는 메서드 */
public String getFilePath(String fieldName) {
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem)items.get(i);
if( item.getFieldName().equals(fieldName) )
return item.getName();
}
return null;
}
/* 주어진 이름에 해당하는 업로드 파일의 이름을 리턴하는 메서드 */
public String getFileName(String fieldName) {
String path = getFilePath(fieldName);
int index1 = path.lastIndexOf("/");
int index2 = path.lastIndexOf("\\");
int index = 0;
if( index1 > index2 )
index = index1;
else
index = index2;
if( index < 0 )
return path;
else
return path.substring(index + 1);
}
/* 주어진 이름으로 해당하는 업로드 파일을 저장하는 메서드 */
public void saveFile(String fieldName, String path) throws Exception {
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem)items.get(i);
if( item.getFieldName().equals(fieldName) ) {
if( !item.isFormField() ) {
item.write(new File(path));
return;
}
}
}
}
}// end - class
- 업로드 예제(FileUpLoad) - JSP 페이지라고 가정
/* 파일업로드 기능 추가후 파미터 받기 */
MultiPart multiPart = new MultiPart(request);
String title = multiPart.getParameter("title");
String writer = multiPart.getParameter("writer");
String content = multiPart.getParameter("content");
String fileName = multiPart.getFileName("file");
※ 입력 폼에서 파일업로드할시 method="post" enctype="multipart/form-data" 해주어야 함.
이후에 Action.jsp 에서 String 받는거처럼 request.getParameter("ParameterName");
로 받아서 찍어보면 전부 Null 값으로 나온다.
위에 처럼 MultiPart 로 받아와야함.
if( fileName !=null || fileName != "" ){
/* 작성자 및 날짜로 파일명 중복 예방? */
String filePath = firstDt + "_" + writer + "_" + fileName;
newPath = application.getRealPath("/upload/" + filePath);
/* 파일 업로드 저장 */
multiPart.saveFile("file", newPath);
}
else{
newPath = "Not File";
}
※ 파일이름 받아와서 Null 유뮤 체크하그 업로드
'공부 > JAVA_UTILL_CLASS' 카테고리의 다른 글
JSP_[util.CookieBox] (0) | 2012.07.24 |
---|