본문 바로가기

청년취업아카데미/DayLog

[ JSP ] Day 12 - ② File Upload

# File Upload

(1) HTML - uploadForm.html

file을 업로드할 때, <input>태그의 type 속성 값을 file로 지정한다.

...더보기
<%@ 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>Insert title here</title>
</head>
<body style="background-color:pink">
	<center>
		<h2>File Upload</h2>
		<form action="upload.jsp" method="post" enctype="multipart/form-data">
			<label for="name">작성자</label> <input type="text" name="name"
				id="name" />
			<p>
				제목 : <input type="text" name="title" />
			<p>
				파일 명 : <input type="file" name="uploadFile" />
			<p>
				<input type="submit" value="확인">
		</form>
	</center>
</body>
</html>

 

(2) JSP - upload.jsp

파일을 가져올때는 반드시 MultipartRequest로 받아야한다. 가장 유명함.

...더보기
<%@page import="java.io.File"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ 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>Insert title here</title>
</head>
<body style="background-color:pink">
	<%
		request.setCharacterEncoding("UTF-8");
		int maxSize = 5 * 1024 * 1024;
		String fileSave = "/fileSave";
		String realPath = getServletContext().getRealPath(fileSave);
		System.out.println("realPath --> "+realPath);
		MultipartRequest multi = new MultipartRequest(request, realPath, maxSize, "UTF-8", new DefaultFileRenamePolicy());
		Enumeration en = multi.getFileNames();
		while(en.hasMoreElements()){
			// input 태그의 속성이 file인 태그의 name 속성 값:파라미터 이름
			String filename1 = (String)en.nextElement();
			// 서버에 저장된 파일 이름
			String filename = multi.getFilesystemName(filename1);
			// 전송전 원래의 파일 이름
			String original = multi.getOriginalFileName(filename1);
			// 전송된 파일의 내용 타입
			String type = multi.getContentType(filename1);
			// 전송된 파일 속성이 file인 태그의 name 속성값을 이용해 파일 객체 생성
			File file = multi.getFile(filename1);
			
			out.println("Real Path : "+realPath+"<br>");
			out.println("Parameter Name : "+filename1+"<br>");
			out.println("Real File Name : "+original+"<br>");
			out.println("Stored File Name : "+filename+"<br>");
			out.println("File Type : "+type+"<br>");
			if(file!=null){
				out.println();
			}
		}
		String name = multi.getParameter("name");
		String title = multi.getParameter("title");
	%>
</body>
</html>

Result