파일업로드

suyeon lee·2021년 3월 8일
0

JSP

목록 보기
15/24

file upload

웹 브라우저에서 서버로 파일을 전송하여 서버에 저장하는것을 말함
폼 태그를사용하고, 전송된 파일을 서버에 저장하기 위해 오픈 라이브러리를 이용

파일 업로드를 위한 jap페이지 규칙

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 사용하기

사용을 위해 cos.jsp라이브러리 필요함

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>");


0개의 댓글