웹 브라우저에서 서버로 파일을 전송하여 서버에 저장하는것을 말함
폼 태그를사용하고, 전송된 파일을 서버에 저장하기 위해 오픈 라이브러리를 이용
1.method속성은 반드시 POST방식
2.enctype속성은 반드시"multipart/form-data"
3.action="업로드처리할 jap파일경로"
4.input태그의 type속성을file로설정
< form action="파일업로드를 처리할JSP파일경로" method="POST" emctype="multipart/form-data">
< input type="file" name="요청 파라미터 이름">
< /form >
MultipartRequest 클래스 생성
MultipartRequest 생성자의 매개변수종류
MultipartRequest(request : Request내장객체를 설정
saveDirectory : 서버의 파일 저장 경로를설정
maxPostSize : 파일의 최대 크기를 설정함
encoding : 인코딩유형설정
policy : 파일명 변경 정책을 설정함.saveDirectory에 파일명이 중복되는 경우 덮어쓰기 여부를설정하며,설정하지 않으면 덮어씁니다.
)
MultipartRequest를 사용하기위해 밑에 두개를 import해줘야함
DefaultFileRenamePolicy() 파일명이 중복일경우 파일명뒤에 숫자를 덧붙여 파일명이 중복되지 않게 해줌
<%@ page import="com.oreilly.servlet.*"%>
<%@ page import="com.oreilly.servlet.multipart.*"%>
......(생략)
MultipartRequest multi = new MultipartRequest(request, "C:\\upload", 5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());
MultipartRequest 메소드 종류
getContentType : 업로드된 파일의 콘테츠 유형을반환함
getParameter : 요청 파라미터 이름이 name인 값을 전달
getParameterNames : 요청 파라미터 이름을 Enumeration 객체타입으로 변환
getFile : 폼페이지에 input태그내 type속성값이 file로 설정된 요청 파라미터의 이름을 반환
getFilesystemName : 사용자가 설정하여 서버에 실제로 업로드된 파일명을 반환함 파일명이 중복되면 변경된 파일명을 반환
getOriginalFileName : 사용자가 업로드한 실제 파일명 반환
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form name="fileForm" method="post" enctype="multipart/form-data" action="fileupload01_process.jsp">
<p> 이 름 : <input type="text" name="name">
<p> 제 목 : <input type="text" name="subject">
<p> 파 일 : <input type="file" name="filename">
<p> <input type="submit" value="파일 올리기">
</p>
</form>
</body>
</html>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="com.oreilly.servlet.*"%>
<%@ page import="com.oreilly.servlet.multipart.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%
MultipartRequest multi = new MultipartRequest(request, "C:\\upload", 5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());
//일반 파라메터들도 multi객체를 통행입력받음
String pname = multi.getParameter("name");
String subject = multi.getParameter("subject");
out.println(pname + " = " + subject + "<br>");
out.println("-----------------------------------<br>");
String filename = multi.getFilesystemName("filename");
out.println("저장 파일 이름 : " + filename + "<br>");