20.03 ~ 20.08 국비교육/JSP

파일 업로드

찹키리 2020. 5. 6. 11:57

<파일 업로드>

 

[form method = "post" enctype = "multipart/form-data"] 

*enctype(인코딩 타입): [input type = "file"]을 사용한 경우 반드시 필요한 속성

 

--- 전송 --->

request.getParameter 사용X ===> 업로드 컴포넌트를 사용해 인자를 받는다.
ex. jspmart.jar cos.jar part클래스로 직접 받기

: request영역이 아닌 temp 임시저장소에 저장


--- 이동, 복사 --->

/upload 자료실 위치

 

 

 

*cos.jar파일의 com\oreilly\servlet 폴더의 MultipartRequest 클래스 생성자

-> public MultipartRequest(request 인자, 저장할 디렉토리 위치, 파일크기 제한, 인코딩 타입, 중복파일 자동 이름 변경)

 

 

 

 

<cos. jar 다운로드>

 

 

www.servlets.com 홈페이지에 접속한다.

 

 

 

 

zip 파일 다운로드

 

 

 

 

압축 해제 뒤 lib폴더를 클릭

 

 

 

 

cos.jar을 복사한다.

 

 

 

 

기본 위치 WebContent - Web-Inf - lib에 붙여넣기

 

 

 

 

 

<예제>

 

-폴더 생성

 

 

WebContent 폴더 밑에 업로드할 폴더를 생성한다.

 

 

 

 

Properties에서 경로 확인

 

 

 

 

Path가 아닌 Location을 사용한다.

 

 

 

 

 

-코드 구현

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
    <form name = "frmName" method = "post" enctype = "multipart/form-data" action = "viewPage.jsp">
    user<br/>
    <input name = "user"><br/>
    
    title<br/>
    <input name = "title"><br/>
    
    file<br/>
    <input type = "file" name = "uploadFile"><br/>
    <input type = "submit" value = "UPLOAD"><br/>
    </form>
</body>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

파일 업로드 페이지

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<%@ page import = "com.oreilly.servlet.MultipartRequest" %>
<%@ page import = "com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import = "java.util.*, java.io.*" %>
 
<%
    String saveFolder = "C:/java_project/mywork_jsp/chapter13/WebContent/upload";
    String encType = "UTF-8";
    int maxSize = 5 * 1024 * 1024;
    
    try {
        MultipartRequest multi = null;
        multi = new MultipartRequest(request, saveFolder, maxSize,
                encType, new DefaultFileRenamePolicy());
        Enumeration params = multi.getParameterNames();
        
        while(params.hasMoreElements()) {
            String name = (String)params.nextElement();
            String value = multi.getParameter(name);
            out.println(name + " = " + value + "<br/>");
        }
        
        Enumeration files = multi.getFileNames();
        
        while(files.hasMoreElements()) {
            String name = (String)files.nextElement();
            
            String filename = multi.getFilesystemName(name);
            String original = multi.getOriginalFileName(name);
            String type = multi.getContentType(name);
            
            File f = multi.getFile(name);
            
            out.println("파라미터 이름: " + name + "<br/>");
            out.println("실제 파일 이름: " + original + "<br/>");
            out.println("저장된 파일 이름: " + filename + "<br/>");
            out.println("파일 타입: " + type + "<br/>");
            
            if(f != null) {
                out.println("크기: " + f.length() + "바이트");
                out.println("<br/>");
            }
        }
    } catch(IOException ioe) {
        System.out.println(ioe);
    } catch(Exception ex) {
        System.out.println(ex);
    }
%>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

업로드 및 확인

: 업로드는 MultipartRequest 생성자를 생성한 순간 이미 끝났지만, 아래에 loop를 돌려 확인하는 절차를 만들었다.

 

 

 

 

-실행

 

 

파일 업로드 페이지

 

 

 

 

업로드 정보 출력