상세 컨텐츠

본문 제목

파일 업로드 라이브러리(cos.jar) - multipart/form-data

WebProgramming/JSP

by ChrisMare 2018. 10. 25. 17:36

본문

파일 업로드 라이브러리(cos.jar) 다운로드 및 설치

http://www.servlets.com 접속하면 해당 화면이 나오는데 여기서 com.oreilly.servlet을 클릭하시면 됩니다.

해당 화면을 아래로 스크롤 하시다보면 Download 항목이 있습니다. 그 곳에 있는 cos-26Dec2008.zip를 다운받으시면 됩니다.


다운 받으신 후 압출을 풀고 해당 lib 폴더안의 cos.jar 파일을 복사합니다.


이것을 사용하고있는 프로젝트에 WEB-INF > lib 폴더에 붙여넣어 사용하시면 됩니다.

그리고 파일 업로드할 시 저장될 폴더를 WebContent안에 만들어 줍니다. (File)



그 후 해당 소스코드로 사용하시면 간단히 사용하실 수 있습니다.


fileForm.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>File Form Page</title>
</head>
<body>
<h1>File Form Page</h1>
<hr>
<!-- 파일 업로드를 위해서는 form에 속성을 enctype="multipart/form-data" 라고 부여해야지만 가능하다.  -->
<form action="fileFormOK.jsp" method="post" enctype="multipart/form-data">
    파일 : <input type="file" name="file"><br/>
    <input type="submit" value="File Upload">
</form>
</body>
</html>
cs

fileFormOK.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
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    // 실제로 서버에 저장되는 path
    String path = request.getRealPath("File");
    out.println("절대 경로 : " + path + "<br/>");
    
    int size = 1024 * 1024 * 10// 파일 사이즈 설정 : 10M
    String fileName = "";    // 업로드한 파일 이름
    String originalFileName = "";    //  서버에 중복된 파일 이름이 존재할 경우 처리하기 위해
    
    // cos.jar라이브러리 클래스를 가지고 실제 파일을 업로드하는 과정
    try{
        // DefaultFileRenamePolicy 처리는 중복된 이름이 존재할 경우 처리할 때
        // request, 파일저장경로, 용량, 인코딩타입, 중복파일명에 대한 정책
        MultipartRequest multi = new MultipartRequest(request, path, size, "EUC-KR"new DefaultFileRenamePolicy());
        
        // 전송한 전체 파일이름들을 가져온다.
        Enumeration files = multi.getFileNames();
        String str = (String)files.nextElement();
        
        //파일명 중복이 발생했을 때 정책에 의해 뒤에 1,2,3 처럼 숫자가 붙어 고유 파일명을 생성한다.
        // 이때 생성된 이름을 FilesystemName이라고 하여 그 이름 정보를 가져온다. (중복 처리)
        fileName = multi.getFilesystemName(str);
        //실제 파일 이름을 가져온다.
        originalFileName = multi.getOriginalFileName(str);
        
    }catch(Exception e){
        e.printStackTrace();
    }
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>File Upload Result</title>
</head>
<body>
<h1>File Upload Result</h1>
<hr>
<h2><span>file upload success!!</span></h2>
</body>
</html>
cs


업로드하시면 프로젝트 폴더에 들어가는게 아니라 실제 서버 프로젝트 절대 경로에 들어가게 됩니다.

절대경로 : < 프로젝트경로\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\fileuploadTest\File >


간접경로에 파일이 업로드 x


이 처럼 서버의 직접경로에 업로드 된다.


감사합니다.

관련글 더보기

댓글 영역