Servlet - 간단한 업로드 서블릿(Upload Servlet) 예제
목록 추천  
추천수: 214 
제 목 간단한 업로드 서블릿(Upload Servlet) 예제
작성자 박세청 작성일 2010/03/11 15:09


로컬의 화일을 서버에 업로드 하는 간단 예제입니다.

여기서는 multipart 처리를 위해 oreilly의 팩키지를 이용 했습니다.

(이외에도 자카르다프로젝트나 스트럿츠의 경우 자체 업로드를 지원 합니다.)

 

 

import com.oreilly.servlet.MultipartRequest;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

 

public class Upload extends HttpServlet {


   int maxsize = 5*1024*1024; //업로드제한 화일사이즈
   final String Path = "/upload/"; //업로드된 화일이 저장 될 디렉토리
   String fname; //업로드된 화일이름
   String cname;  //실제 저장될 화일이름


  MultipartRequest multi; //텍스트와 바이너리를 받을 객체 선언
    

  //service로 구현할 경우 post, get방식 둘다 지원
  public void service(HttpServletRequest req, HttpServletResponse res)
                     throws ServletException, IOException {
      res.setContentType("text/html;charset=euc-kr");

      PrintWriter out = res.getWriter();

      /* 한글이 깨질경우 사용

      PrintWriter out = new PrintWriter(
      new OutputStreamWriter(res.getOutputStream(), "euc-kr"),true);
     */


    ServletContext request = getServletContext();     //servletContext객체생성
    String rootPath = request.getRealPath("/") + Path;  //upload 디렉토리 세팅
    
    try {
      multi = new MultipartRequest(req, rootPath, maxsize);
      Enumeration file = multi.getFileNames();      //업로드된 파일들의 이름리턴
      while(file.hasMoreElements()) {
          String ename = (String)file.nextElement();
          
          fname = multi.getFilesystemName(ename);       //파일이름리턴
          cname = ""+System.currentTimeMillis();
          File f = multi.getFile(fname);                //파일객체리턴
          java.io.File up1 = new java.io.File(rootPath+fname);
          java.io.File up2 = new java.io.File(rootPath+cname); //동일화일 업로드시 overwrite를 막기위해 이름을 유니크하게 바꾸어 준다.
          if (up1.exists()){

              boolean rslt = up1.renameTo(up2);

          }
      }
      
    }
    catch(Exception e) { e.printStackTrace(); }
        

    //여기서는 파일저장후 화일명 및 텍스터에 관련된 파라미터값을 가져온다.
    String name  = multi.getParameter("name");
    String title  = multi.getParameter("title");
    String content  = multi.getParameter("content");
    String filename  = fname;
    String filecname  = cname;
    

   //위에 파라미터 값을 바탕으로 DB에 데이터 처리를 아래에 구현하면 된다.  

    .......... DB 데이터 처리 생략.............
  }    
}





이전글 [Network] 인터페이스 웹서블릿 호출시 URLConnection 사용
다음글 다음 글이 없습니다.

목록 추천