http://www.servlets.com/
파일업로드는 Post방식으로만 가능하다 Get 방식 불가능
Http 요청 메시지
header : get방식: http://localhost:8080/chap13/index.jsp?파일주소 << 정말 파일의 위치주소만 전송된다.
body
form enctype="multipart/form-data" 명시를 해야 파일데이터라고 인식을함.
input type="file"
파일을 첨부해서 보낸경우 request.getParameter(무력화당함..) 로 추출을못함. => 통체로 MultipartRequest 에 넘겸줌
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 : 모든파일의 합의 제한용량
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>
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);
}
%>
<!--
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 |