2015년 8월 27일 목요일

신입SW인력을 위한 실전 JSP 동영상과정 - 제22강 파일 업로드

이 게시물은
http://www.wiz.center/209

의 동영상 강의를 시청하고 작성한 글입니다.
새로 시작하는 경우라면 위 링크의 동영상 강의를
들어보세요


1. 간단한 파일 업로드 기능을 구현한다.
    어차피 library 파일을 등록하고 이를 활용하는것이기 때문에
    어떤 library를 쓰느냐에 따라서 다른 기능을 하거나
    하는 운용이 가능하다.

  1) 우선 web application 프로젝트를 생성후
      강의 내용대로 cos.jar 파일을 lib 폴더 밑에 복사한다.
    http://www.servlets.com 접속 후
      좌측 메뉴 3번째 com.oreilly.servlet 클릭
      화면 전환되면 맨 밑에 cos-26Dec2008.zip 파일 다운로드
       압축파일 풀면  lib 폴더 밑에 cos.jar 파일이 생긴다.

  2) WebContent 폴더 밑에 fileFolder 폴더를 생성한다.

  3) fileinputForm.jsp 파일을 생성하고 아래와 같이 작성한다.
      여기서 중요한점은 form 생성시 enctype 을 주고
      enctype="multipart/form-data"> 를 추가해주는 것이다.
      이 옵션이 들어가야 파일을 정상적으로 전송 가능하다.
      input type="file" 은 지켜야되고 name은 임의 부여 가능하다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

<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>

  4) fileFormOk.jsp 라는 jsp 파일을 생성하고 아래와 같이 작성한다.
      여기서 중요한건
      MultipartRequest(request객체 , 저장폴더명, 저장가능한 max사이즈,
                  "언어옵션 EUC-KR, UTF-8 등등",
                    new DefaultFileRenamePolicy() <-- 이걸 주면 같은 파일
                     이름이 이미 있을경우 뒤에 숫자를 붙여줘서 중복을
                     방지해준다.)
      그 밑에는 저장 후 객체에 파일이름, 기존 파일이름 을 가지고 오는데
          이에 대한 처리를 진행 할 수 있게 해놨다.
      해당 클래스에 대한 정보는 아래에서 확인

해당 클래스 설명API
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html

관련 예제(해당 문서와 중복되는 부분 있음)
http://egloos.zum.com/kamsi76/v/361961

<%@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"%>
<%
String path = request.getRealPath("fileFolder");

int size = 1024 * 1024 * 10; //10M
String file = "";
String oriFile = "";

try{
MultipartRequest multi = new MultipartRequest(request, path, size, "EUC-KR", new DefaultFileRenamePolicy());

Enumeration files = multi.getFileNames();
String str = (String)files.nextElement();

file = multi.getFilesystemName(str);
oriFile = multi.getOriginalFileName(str);

} catch (Exception e) {
e.printStackTrace();
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
  file upload success!
</body>
</html>

  5) 실행 결과 확인
      당연히 eclipse 에 표현된 폴더에는 안보인다.
        파일을 올려도 안보이는게 맞음.
        이를 확인하려면 tomcat 밑에 webcontent 밑에 해당
        프로젝트 밑에 파일이 들어가 있는지 확인하면 된다.
C:\apache-tomcat-7.0.63\서버에 등록한 폴더명\프로젝트명\fileFolder




댓글 없음:

댓글 쓰기