본문 바로가기

개발/Web

jsp 파일 업로드 구현

반응형

  • MultipartRequest 를 이용하여 파일 업로드를 구현한다.

    MultipartRequest 를 이용하기 위해서는 http://www.servlets.com/cos/index.html 에서
    Class Multipart Request 를 클릭해 다운 받는다. (파일첨부)
    다운 받은 파일의 압축을 풀고 lib폴더 안에 cos.jar 를 톰캣 설치 폴더의  lib 폴더 안에 추가한다.
    그리고 현재 작업중인 프로그램의 WebContent/Web_INF/lib 아래에도 추가한다.

    그리고 프로젝터를 새로 고침하면 자동으로 적용이 된다.

  • fileUpload.jsp

    <%@ java.util.*"%>      
     <%@ page import="com.oreilly.servlet.MultipartRequest"
     <%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
     String path="c:/file";
     int fileSize= 5 * 1024 * 1024 ; 
     String message = null;
       
     try{
        MultipartRequest multi=new MultipartRequest(request, path, fileSize);
         Enumeration formNames=multi.getFileNames(); 
        String formName=(String)formNames.nextElement();
        String fileName=multi.getFilesystemName(formName);
        if(fileName != null) {  
            message = fileName;
           
        } else {
            message = "fail to upload file";
        }
     } catch(Exception e) {
         message = "fail to upload file";
        e.printStackTrace();
     }
         response.sendRedirect("mainForm.jsp?value="+message);


  • mainForm.jsp
    <form name="fileform" action="fileUpload.jsp" enctype="multipart/form-data" method="post">
    <table border="0" cellpadding="0" cellspacing="10">
    <tr>
        <td nowrap class="FTBHTD2"> 파일 업로드 </td>
        <td class="LTBMTR1">
        <input type="file" name="upfile">
        <input type="submit" value="upload"></td>
    </tr>
    <tr><td><% if(fileName == null) { %> * 5MB 미만의 파일만 첨부 가능합니다.
    <% } else { %> "<%=fileName %>" 가  업로드 되었습니다
    <input type="button" value="태그 업데이트 하기"
    onclick="formSubmitToURL(fileform, 'updateGroupTag.jsp?filename=<%=fileName%>')">
    <% } %></td> </tr>


    mainForm.jsp 에서 input type="file"을 선언하고 파일을 선택한 뒤에 "upload" submit 버튼을 누르면
    fileUpload.jsp 파일을 실행한다. String path 는 업로드 된 파일이 저장될 절대 경로를 적으면 된다.
    int fileSize 는 업로드 파일 최대 크기이며 위에는 5MB 까지 제한을 두고 있다. MultipartRequest 클래스를 이용하여 객체를 생성하여 파일 업로드를 구현한다.
    이때  MultipartRequest multi=new MultipartRequest(request, path, fileSize); 여기에서 MultipartRequest multi=new MultipartRequest(request, path, fileSize,new DefaultFileRenamePolicy()) 로 네번째 파라미터를 추가할 경우 파일 업로드가 될때 같은 파일 이름이 있을 경우 file.txt file1.txt file2.txt 로 변경되어 업로드 된다.
    MultipartRequest multi=new MultipartRequest(request, path, fileSize,"euc-kr", new DefaultFileRenamePolicy()) 이렇게 "euc-kr" 을 추가할 경우 한글 파일 이름이 깨지지 않는다.



반응형

자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!