본문 바로가기

web/JSP

jsp cos.jar 기초 파일 업로드

파일 업로드를 하거나 폼 데이터를 분석하는 컴포넌트인 cos.jar 파일을 이용하여 만들어보았습니다~

먼저 www.servlets.com 사이트에접속하시면 왼쪽에 com.oreilly.servlet 로 들어갑니다.

아래로 내려 보시면 Download 가 있고 cos-26Dec2008.zip 파일이 있습니다~ 다운~

톰캣이 깔린 디렉토리의 common\lib 에 넣습니다. (저의 경우 bin\Tomcat 5.0\common\lib 로 되어 있군요.)

이제 다운 받을 새로운 폴더를 하나 만들어 줍니다. 저의 경우 saveFile로 만들었습니다. (귀찮으면 소스에서 그냥 C:\로 해주면 C:로 다운이 됩니다.)

먼저 전송을 담당할 view 화면 입니다.
파일의 이름을 fileuploadform.jsp 로 했습니다. 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>cos 업로드 테스트 폼</title>
</head>
<body>
<form method="post" action="upload.do" enctype="multipart/form-data">
작성자: 
<input type="text" name="user"><br>
제  목: 
<input type="text" name="title"><br>
파일명: 
<input type="file" name="uploadFile"><br>
<input type="submit" value="파일 올리기"><br>
</form>
</body>
</html>



서블릿을 사용하기 위해서 web.xml을 수정합니다.

<!-- upload 페이지  -->
<servlet>
    <servlet-name>uploadServlet</servlet-name>
    <servlet-class>upload.upload</servlet-class>
    </servlet> 
 <servlet-mapping>
  <servlet-name>uploadServlet</servlet-name>
  <url-pattern>/upload.do</url-pattern>
 </servlet-mapping>
<!-- upload 페이지  -->




다음은 서블릿을 만듭니다. 여기선 upload 패키지의 upload.java로 되어 있습니다.

package upload;

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class upload  extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

             
        RequestDispatcher rd = null;
        String fileName = "";
        File file = null;
        String savePath = "C:/workspace/my/saveFile"; //<- 요기를 바꿔주면 다운받는 경로가 바뀝니다.
        
        Enumeration files = null;
        
        int maxSize = 5 * 1024 * 1024; // 최대 업로드 파일 크기 5MB(메가)로 제한
        try {
         MultipartRequest multi = new MultipartRequest(request,
           savePath, maxSize, "euc-kr", new DefaultFileRenamePolicy());
         fileName = multi.getFilesystemName("uploadFile"); // 파일의 이름 얻기
         
         files = multi.getFileNames();
         String name = (String)files.nextElement();         
         file = multi.getFile(name);
         if (fileName == null) { // 파일이 업로드 되지 않았을때
          System.out.print("파일 업로드 되지 않았음");
         } else { // 파일이 업로드 되었을때
             System.out.println("User Name : " + multi.getParameter("user"));           
             System.out.println("File Name  : " + fileName);
         }//else
        } catch (Exception e) {
            System.out.print("예외 발생 : " + e);
        }//catch
              
        
        rd = getServletContext().getRequestDispatcher("/uploadfileview.jsp?fileName="+ fileName +"&filelength="+file.length());

        rd.forward(request, response);
        
   
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        doGet(request, response);
    }
}

마지막으로 다운이 완료된후 보여줄 화면입니다.
서블릿에서 보이듯이 파일명은 uploadfileview.jsp 입니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%

String fileName = request.getParameter("fileName");
String filelength = request.getParameter("filelength");

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
파일 이름 : <%= fileName%> <br>
용량 : <%= filelength%>KB
</body>
</html>



이제 uploadfileview.jsp로 실행해서 들어가 보시면 
파일명에서 찾아보기로 파일을 선택하고 파일올리기 버튼을 눌르면 결과 창이 나옵니다.~

이클립스에서 파일이 다운 되엇는지 확인할려면 F5키를 눌러서 새로고침을 해야 보입니다.


결과 화면에서 파일이름과 용량이 표시되도록 하였습니다.^-^

사실 어려울거라 생각햇는데 오히려 cos.jar파일을 이용하니 간단하게 파일 업로드가 완성되엇습니다^-^

- 근데...다운은 어떻게 하는거지;;ㅡ,.ㅡ;; ㅋㅋㅋㅋ


'web > JSP' 카테고리의 다른 글

jsp 다중 파일업로드  (4) 2010.11.11
jsp text box 동적 추가 삭제 파라미터로 넘기기!  (1) 2010.11.10
JSP java.lang.NullPointerException  (0) 2010.11.08
JSP Statement PreparedStatement  (0) 2010.11.03
JSP JFreeChart 사용하기 - PIE  (5) 2010.11.02