(1) MultipartRequest 클래스의 생성자
MultipartRequest(HttpServletRequest req, String dir)
→ dir 디렉토리에 파일을 업로드할 MultipartRequest 객체 생성
MultipartRequest(HttpServletRequest req, String dir, int max)
→ max 업로드 가능한 파일의 최대크기
MultipartRequest(HttpServletRequest req, String dir, int max, boolean overwrite, boolean save)
→ overwrite는 파일시스템에 동일한 파일이 있으면 덮어쓰는가 여부를 나타냄
→ save는 파일시스템에 저장하는지 여부를 나타낸다.
(2) MultipartRequest 메소드 소개
<input type="file" name="photo"> 태그를 이용한 파일찾기로 logo.gif 를 업로드했다고 가정하에 설명합니다.
getContentType( "photo" ) : 업로드된 파일의 MIME 타입 리턴, 리턴값 "image/gif"
getFile( "photo" ) : 업로드되어 서버에 저장된 파일의 File 객체 리턴
getFileNames() : 파일관련 파라미터들의 Enumeration 리턴, 리턴값 Enumeration(photo를 가르키는)
getFilesystemName( "photo" ) : 업로드된 파일의 파일시스템에서의 파일명을 리턴, 리턴값 "logo.gif"
HttpServletRequest 와 같은 인터페이스 제공하기 위한 메소드도 제공합니다.
getParameter()
getParameterNames()
getParameterValues()
(3) MultipartRequest 를 이용한 파일 업로드 예제
/example/upload.html
<!--파일명: upload.html-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<body>
<center><h2>파일 업로드</h2></center>
<form action="../servlet/UploadTest" method="post" enctype="multipart/form-data">
이름 : <input type="text" name="submitter"><br>
업로드할 파일 : <input type="file" name="file1"><br>
업로드할 파일 : <input type="file" name="file2"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
/WEB-INF/classes/UploadTest.java
package example;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.MultipartRequest;
public class UploadTest extends HttpServlet {
public void doPost( HttpServletRequest req, HttpServletResponse res )
throws IOException, ServletException {
res.setContentType( "text/html;charset=euc-kr" );
PrintWriter out = res.getWriter();
req.setCharacterEncoding( "euc-kr" );
ServletContext cxt = getServletContext();
String dir = cxt.getRealPath( "tmp" );
try {
MultipartRequest multi = new MultipartRequest( req, dir, 5*1024*1024 );
out.println( "<html>" );
out.println( "<head><title>파일 업로드</title></head>" );
out.println( "<body>" );
out.println( "<h2>파일 업로드</h2>" );
out.println( "<h3>Params</h3>" );
out.println( "<pre>" );
Enumeration params = multi.getParameterNames();
while( params.hasMoreElements() ) {
String name = (String)params.nextElement();
String value = multi.getParameter( name );
out.println( name + "=" + value );
}
out.println( "</pre>" );
out.println( "<h3>업로드된 파일</h3>" );
out.println( "</pre>" );
Enumeration files = multi.getFileNames();
while( files.hasMoreElements() ) {
String name = (String)files.nextElement();
String filename = multi.getFilesystemName( name );
String type = multi.getContentType( name );
File f = multi.getFile( name );
out.println( "파라메터 이름 : " + name + "<br>" );
out.println( "파일 이름 : " + filename + "<br>" );
out.println( "파일 타입 : " + type + "<br>" );
if( f != null ) {
out.println( "크기: " + f.length() + "<br>" );
out.println( "<br>" );
}
}
out.println( "</pre>" );
} catch( Exception e ) {
out.println( "<pre>" );
e.printStackTrace( out );
out.println( "</pre>" );
}
out.println( "</body></html>" );
}
}
① /tmp 라는 디렉토리를 만듭니다.
② 컴파일을 위해 cos.jar 파일을 CLASSPATH 에 추가하고 컴파일합니다. cos.jar
③ cos.jar 파일을 /WEB-INF/lib 에 복사합니다.
④ /WEB-INF/web.xml 파일을 열고 아래를 추가합니다.
/WEB-INF/web.xml
<servlet>
<servlet-name>UploadTest</servlet-name>
<servlet-class>example.UploadTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadTest</servlet-name>
<url-pattern>/servlet/UploadTest</url-pattern>
</servlet-mapping>
[출처] MultipartRequest 사용법|작성자 마루아라
'Jsp_Html' 카테고리의 다른 글
[Jsp] html meta tag (0) | 2010.11.12 |
---|---|
[Jsp] Get과 Post 전송방식 (0) | 2010.11.10 |
[Jsp] jsp 로 엑셀 excel 다운로드 파일 만들기 (한글깨짐, 숫자 포함) (0) | 2010.09.30 |
[Jsp] 히든 jsp에서 스크립트 안먹을때 확인 (0) | 2010.09.06 |
[Jsp] 저장 후 컴파일하여 저장 되는 위치 (0) | 2010.09.03 |