일반적으로 form 을 submit 하게되면, form안의 element들이 id 나 name으로 submit된다.

submit을 받아 처리하는 action에 정의된 handler들에서는 request.getParameter( "xxx" ); 를 통해 값을 받게 되는데...

파일을 서버에 저장하기 위해서  <form enctype="multipart/form-data" ... 을 사용하게 된다.

하지만, 이때는...
submit을 받아 처리하는 action에 정의된 handler들에서는 request.getParameter( "xxx" ); 를 통해 값을 받을 수 없고,
직접 요청해야 한다.  com.oreilly.servlet.MultipartRequest
 
if( request.getContentType() != null && request.getContentType().indexOf("multipart/form-data") > -1 ) {
    String saveDirectory = config.getServletContext().getRealPath( uploadDir + "/education" );
    File dir = new File( saveDirectory );
    if( !dir.exists() ) dir.mkdir();

    int maxSize = 10 * 1024 * 1024;
    DefaultFileRenamePolicy dfrp = new DefaultFileRenamePolicy();

    MultipartRequest multi = new MultipartRequest( request, saveDirectory, maxSize, "euc-kr", dfrp );
    multi.getParameter( "xxx" );
}

MultipartRequest 를 사용하면
MultipartRequest 를 new 하는 순간에...
<input type="file" ... 로 정의 되어있는 파일들이 saveDirectory로 지정된 곳에 upload 된다.

파일이름이 같은 경우를 위해서는,
DefaultFileRenamePolicy 를 써주면 좋다.  (안써도 무방하다)
저장되는 파일명은 aaa.txt 가 2개라면...
두번째 파일은 aaa(1).txt로 저장된다.

저장되는 파일명과
보여줄 파일명이 다를테니...
DB에 저장할 때는...2개 다 저장하는 게 좋을 것 같다.

아~~~주 상세한 설명은 아래를  참고하시라~
"MultipartRequest를 이용하여 업로드구현하기":http://aboutjsp.com/lec/multipart.jsp

http://lilymate.tistory.com/trackback/192
반응형

'Backend > Java&Spring Framework' 카테고리의 다른 글

노프레임에서 사이드바  (0) 2011.12.26
Posted content type isn't multipart/form-data  (0) 2011.11.24
The requested resource ()is not available.  (0) 2011.11.18
OPTION 전화번호  (0) 2011.11.16
java  (0) 2011.11.15

+ Recent posts