fileupload01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>
<form name="fileForm" action="fileupload01_process.jsp" method="post" enctype="multipart/form-data" >
<p>이름 : <input type="text" name="name"/> </p>
<p>제목 : <input type="text" name="subject"/> </p>
<p>파일 : <input type="file" name="filename"/> </p>
<p><input type="submit" value="파일올리기"/> </p>
</form>
</body>
</html>
fileupload01_process.jsp
<%@page import="java.io.File"%>
<%@page import="java.nio.file.Files"%>
<%@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=UTF-8"
pageEncoding="UTF-8"%>
<%
File sfile = new File("C:\\upload");
if(!sfile.exists()){
sfile.mkdirs();
}
// 웹 브라우저에서 전송되는 파일을 서버의 C:\\upload 경로에 저장하고,
// 파일의 최대 크기는 5MB(5 * 1024 * 1024) 이고,
// 파일명의 인코딩 유형은 UTF-8이다.
// Policy 설정을 new DefaultFileRenamePolicy()로 하는 경우, 중복되는 파일이 있으면 새로운 파일명으로 파일을 만든다.
// 이때 새로운 파일명은 끝에 1이 붙는 파일명이다.
// Policy 설정을 null로 하게되면 파일명 변경 정책을 성정하지 않았으므로 덮어쓴다.
// C드라이브에 upload 폴더가 없는 경우, 'java.lang.IllegalArgumentException : Not a directory' 에러 발생
// upload 폴더를 미리 생성해둔다. or 해당 경로의 폴더가 없을 때 생성할 역할을 만들어준다.
MultipartRequest multi = new MultipartRequest(
request, "C:\\upload", 5 * 1024 * 1024, // 5MB 메가바이트!
"UTF-8", new DefaultFileRenamePolicy()); //new DefaultFileRenamePolicy() 리네임정책설정
// 일반데이터 가져오기
// 폼 페이지에서 전송된 요청 파라미터를 받도록 MultipartRequest 객체 타입의 getParameterNames()메소드를 작성한다.
Enumeration params = multi.getParameterNames();
// 폼 페이지에서 전송된 요청 파라미터가 없을 때까지 반복하도록 hasMoreElements() 메소드를 작성한다.
while(params.hasMoreElements()){
// 폼 페이지에서 전송된 요청 파라미터의 이름을 가져오도록 nextElement() 메소드를 작성
String name = (String) params.nextElement();
// 폼 페이지에서 전송된 요청 파라미터의 값을 얻어오도록 nextElement() 로 얻어온 요청 파라미터의 이름으로
// MultipartRequest 객체 타입의 getParameter() 메소드를 작성
String value = multi.getParameter(name);
out.println(name + " = " + value + "<br/>");
}
out.println("----------------------------------<br/>");
// 파일데이터 가져오기
// 폼 페이지에서 전송된 요청 파라미터 중 파일을 전달 받도록 MultipartRequest 객체 타입의 getFileNames() 메소드 작성
Enumeration files = multi.getFileNames();
// 폼페이지에서 정송된 요청 파라미터 중 파일이 없을 때 까지 반복하도록hasMoreElements() 메소드 작성
while(files.hasMoreElements()){
// 폼페이지에서 전송된 요청 파라미터중 파일을 가져오도록 nextElement() 메소드를 작성
// getFilesystemName() 메소드 작성
String name = (String) files.nextElement();
// 폼페이지에서 전송 되어 서버에 업로드 된 파일을 가져오도록 MultipartRequest 객체 타입의
// getFilesystemName() 메소드 작성
String filename = multi.getFilesystemName(name);
// 폼페이지에서 전송된 파일이 서버에 저장되기 정의 파일이름을 가져오도록 MultipartRequest 객체 타입의
// getOriginalFileName() 메소드 작성
String original = multi.getOriginalFileName(name);
String type = multi.getContentType(name);
File file =multi.getFile(name);
// fileupload.jsp 에서 input file로 설정된 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/>");
}
}
%>
fileupload02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>
<form name="fileForm" action="fileupload02_process.jsp" method="post" enctype="multipart/form-data" >
<p>
이름1 : <input type="text" name="name1"/>
제목1 : <input type="text" name="subject1"/>
파일1 : <input type="file" name="filename1"/>
</p>
<p>
이름2 : <input type="text" name="name2"/>
제목2 : <input type="text" name="subject2"/>
파일2 : <input type="file" name="filename2"/>
</p>
<p>
이름3 : <input type="text" name="name3"/>
제목3 : <input type="text" name="subject3"/>
파일3 : <input type="file" name="filename3"/>
</p>
<p>
<input type="submit" value="파일올리기"/>
</p>
</form>
</body>
</html>
fileupload02_process.jsp
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
File sfile = new File("C:\\upload");
if(!sfile.exists()){
sfile.mkdirs();
}
MultipartRequest multi = new MultipartRequest(
request, "C:\\upload", 20 * 1024 * 1024, // 5MB 메가바이트!
"UTF-8", new DefaultFileRenamePolicy());
String name1 = multi.getParameter("name1");
String subject1 = multi.getParameter("subject1");
String name2 = multi.getParameter("name2");
String subject2 = multi.getParameter("subject2");
String name3 = multi.getParameter("name3");
String subject3 = multi.getParameter("subject3");
Enumeration files = multi.getFileNames();
String file3 = (String) files.nextElement();
String filename3 = multi.getFilesystemName(file3);
String file2 = (String) files.nextElement();
String filename2 = multi.getFilesystemName(file2);
String file1 = (String) files.nextElement();
String filename1 = multi.getFilesystemName(file1);
%>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<table border="1">
<tr>
<th width="100">이름</th>
<th width="100">제목</th>
<th width="100">파일</th>
</tr>
<%
out.print("<tr><td>" + name1 + "</td>");
out.print("<td>" + subject1 + "</td>");
out.println("<td>" + filename1 + "</td></tr>\n");
out.print("<tr><td>" + name2 + "</td>");
out.print("<td>" + subject2 + "</td>");
out.println("<td>" + filename2 + "</td></tr>\n");
out.print("<tr><td>" + name3 + "</td>");
out.print("<td>" + subject3 + "</td>");
out.println("<td>" + filename3 + "</td></tr>\n");
%>
</table>
</body>
</html>
fileupload03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="fileForm" action="fileupload03_process.jsp" method="post" enctype="multipart/form-data" >
<p> 파일: <input type="file" name="filename"/></p>
<p> <input type="submit" value="파일올리기"/></p>
</form>
</body>
</html>
fileupload03_process.jsp
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.DiskFileUpload"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.List"%>
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String fileUploadPath = "C:\\upload";
File tempFile = new File(fileUploadPath);
if(!tempFile.exists()){
tempFile.mkdirs();
}
DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator params = items.iterator();
while(params.hasNext()){
FileItem fileItem = (FileItem) params.next();
if(!fileItem.isFormField()){
String fileName = fileItem.getName();
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
%>
<p><%=fileName %>이 저장되었습니다!</p>
<%
File file = new File(fileUploadPath + "/" + fileName);
fileItem.write(file);
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>