FileUpLoad

 | JSP
2012. 5. 8. 18:14

 

 

wrapper구현.png

 

http://www.servlets.com/

cos-26Dec2008.zip

 

 

 

파일업로드는 Post방식으로만 가능하다 Get 방식 불가능

Http 요청 메시지
header : get방식: http://localhost:8080/chap13/index.jsp?파일주소 << 정말 파일의 위치주소만 전송된다.
body

form  enctype="multipart/form-data" 명시를 해야 파일데이터라고 인식을함.
input type="file"

파일을 첨부해서 보낸경우 request.getParameter(무력화당함..) 로 추출을못함. => 통체로 MultipartRequest 에 넘겸줌
 
WEB-INF/lib/cos.jar
cos라이브러리는 동시에 여러 파일을 올리수있다.
maxSize : 모든파일의 합의 제한용량


WEB-INF/fileSelect.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   
<!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=UTF-8">
<title>파일 업로드 예제</title>
</head>
<body>
<!--
method="post" : get방식은 파일업로드 못함
enctype="multipart/form-data" : 파일업로드시 반드시 명시
type="file" : 선택파일을 매치시켜 파일을 업로드
-->
<form name="fimeForm" method="post" enctype="multipart/form-data" action="fileUpload.jsp">
작성자: <input type="text" name="user"><br/>
제목:<input type="text" name="title"><br/>
파일명:<input type="file" name="uploadFile"><br/>
파일명2:<input type="file" name="uploadFile2"><br/>
<input type="submit" value="파일 올리기"><br/>
</form>
</body>
</html>



WEB-INF/fileUpload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<!--
MultipartRequest :
DefaultFileRenamePolicy : 기존에 업로드 파일중 이름이 똑같은것이 있는경우  업로드시 이름을 변경해주는것 ex)a.jsp,a1.jsp
 -->
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>

<%
    String realFolder = ""; //웹 어플레케이션상의  절대경로

    //파일이 업로드되는 폴더를 지정한다
    String saveFolder = "upload";
    String encType = "utf-8";///엔코딩타입
    int maxSize = 5 * 1024 * 1024;//최대 업로드될 파일크기 5mb

    ServletContext context = getServletContext();
    //현재 jsp 페이지의 웹어플리케이션상의 절대 경로를 구한다.
    realFolder = context.getRealPath(saveFolder);
    out.println("the realpath is: " + realFolder + "<br/>");

    try {
        MultipartRequestmulti= null;

        //전송을 담당할 콘포넌트를 생성하고 파일을 전송한다.
        //전송할 파일명을 가지고 있는 객체, 서버상의 절대경로, 최대 업로드될 파일크기
        /*
        MultipartRequest(
                request, :    요청request를 통채로 넘겨줌
                realFolder, : 웹어플리케이션상의 절대경로
                maxSize, : 최대용량
                encType, : 파일타입
                new DefaultFileRenamePolicy() :같은파일명이있는경우 이름변경
        */
        multi= new MultipartRequest(request, realFolder, maxSize, encType, new DefaultFileRenamePolicy());
       
        //Form의 파라미터 목록을 가져온다.         //getParameterNames: 파일과 관련없는 일반정보인 경우 추출방법        //Enumeration : java.util : 데이터를 여러개 보관할수 있는객체         Enumeration params= multi.getParameterNames();

        //파라미터를 출력한다.
        while (params.hasMoreElements()) {
            //전송되는 파라미터이름
            String name = (String) params.nextElement();
            //전송되는 파라미터값
            String value = multi.getParameter(name);

            out.println(name + "=" + value + "<br>");

        }
        out.println("----------------------------------------------<br/>");

        //전송할 파일 정보를 가져와 출력한다.
        //getFileNames : 파일과 관련있는 정보인 경우의 추출방법
        Enumeration files = multi.getFileNames();

        //파일 정보가 있다면
        while (files.hasMoreElements()) {

            //input태그 속성이 file 인 태그의 name속성값 : 파라미터 이름
            String name = (String) files.nextElement();

            //서버에 저장된 파일 이름
            String filename = multi.getFilesystemName(name);

            //전송전 원래의 파일이름
            String original = multi.getOriginalFileName(name);

            //전송된 파일의 내용타입
            String type = multi.getContentType(name);

            //전송된 파일 속성이  file인 태그의 name 속성값을 이용해 파일 객체 생성
            //용량을 알아내기 위해서 : file.length();
            File file = multi.getFile(name);

            out.println("파라미터 이름 : " + name + "<br/>");
            out.println("실제 파일 이름 : " + original + "<br/>");
            out.println("저장된 파일 이름 : " + filename + "<br/>");
            out.println("파일 타입 : " + type + "<br/>");

            if (file != null) {
                out.println("크기 : " + file.length());
                out.println("<br/>");
            }
        }
    } catch (IOException ioe) {
        System.out.println(ioe);
    } catch (Exception ex) {
        System.out.println(ex);
    }
%>

 

 

다중업로드

 

이 글은 스프링노트에서 작성되었습니다.

'JSP' 카테고리의 다른 글

Filter(유저를 this 시켜 보자 )  (0) 2012.05.08
FileUploadRequestWrapper  (0) 2012.05.08
엑셀파일다운로드  (0) 2012.05.08
fileDownload.jsp  (0) 2012.05.08
FileDownLoad  (0) 2012.05.08
Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :