카테고리 없음

fileupload

설총이 2018. 7. 27. 11:05

- fileupload.form


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>multipart 폼</title>
</head>
<body>
<form action = "fileupload_Pro.jsp" method = "post" enctype = "multipart/form-data">
text1 : <input type = "text" name = "text1" /><br/>
file1 : <input type = "file" name = "file1"/><br/>
file2 : <input type = "file" name = "file2"/><br/>
<input type = "submit" value = "전송"/>
</form>
</body>
</html>
cs





- fileupload_jsp



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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import = "java.util.Iterator" %>
<%@ page import = "java.util.List" %>
<%@ page import = "java.io.*" %>
<%@ page import = "org.apache.commons.fileupload.FileItem" %>
<%@ page import = "org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import = "org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<!DOCTYPE html>
<html>
<head>
<title>업로드 정보</title>
</head>
<body>
<%
    //1. multipart/form-data여부 확인
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if(isMultipart){
        
        //2. 메모리나 파일로 업로드 데이터를 보관하는 FileItem의 Factory 설정
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //파일 객체를 만듬.
        
        //3. 업로드 요청을 처리하는 ServletFileUpload 생성
        ServletFileUpload upload = new ServletFileUpload(factory); // 업로드 요청을 처리해줄수있는객체
        upload.setHeaderEncoding("utf-8");
        
        //4. 업로드 요청 파싱해서 FileItem 목록 구함
        List<FileItem>items = upload.parseRequest(request);
        //요청된 모든 파라미터값을 FileItem객체로 만든다(여기선 3개가 만들어진다)
        
        Iterator<FileItem>iter = items.iterator();
        while(iter.hasNext()){
            FileItem item = iter.next();
            //5. FileItem이 폼 입력 항목인지 여부에 따라 알맞은 처리
            if(item.isFormField()){ // true면 값이 하나인 일반파라미터 , false면 file타입인 파라미터
                String name = item.getFieldName();
                String value = item.getString("utf-8");
%>
요청 파라미터 : <%=name %> = <%=value %><br/>
<%
            }else{
                String name = item.getFieldName(); //input 태그의 name값
                String fileName = item.getName();
                //업로드한 파일의 이름 , 공통된 이름이 있으면 덮어쓰기가 된다.
                String contentType = item.getContentType(); //업로드한 파일의 타입
                boolean isInMemory = item.isInMemory();
                // 메모리에 저장 : true , 임시경로에 저장 : false
                long sizeInBytes = item.getSize(); // 업로드된 파일의 크기
                File file = new File("d://item/"+fileName); //이 경로로 파일을 만들어주는 객체생성
                item.write(file); //임시디렉토리나 메모리에 업로드되어있는 파일을 이 경로에 이동시켜줌
%>
파일 : <%=name %><%=fileName %><%=sizeInBytes %><%=contentType %>
<%= isInMemory ? "메모리저장" : "임시파일저장" %><br/>
<%
            }
        }
    }else// multipart/form 아님
%>
multipart/form 요청이아님.
<%%>
</body>
</html>
cs