AR삽질러

JSP - 파일업로드 본문

JAVA/JSP

JSP - 파일업로드

아랑팡팡 2023. 3. 10. 16:10
728x90

JSP FileUpload : JSP(Java Server Pages) 파일 업로드는 웹 어플리케이션에서 사용자가 파일을 업로드하는 기능을 구현할 때 사용된다.

 

1. 파일업로드 원리

 

 1). HTML폼 작성

<form method="post" enctype="multipart/form-data">
	<input type="file" name="filename">
</form>

사용자가 파일을 업로드할 수 있는 HTML 폼을 작성한다. enctype 속성을 "multipart/form-data" 로 지정해야 하는데  이 속성을 지정하지 않으면 파일 업로드가 되지 않습니다. Get과 Post방식에 용량이 제한되어 있기 때문이다.

 

 2). 파일 업로드 처리

- 서버 측에서는 JSP 페이지에서 multipart/form-data로 전송된 데이터를 처리해야 한다. 이때, javax.servlet.http.Part 인터페이스를 사용하여 업로드된 파일에 대한 정보를 얻을 수 있습니다.

- MultipartRequest생성자 : MultipartRequest는 JSP에서 파일 업로드를 처리하기 위해 사용되는 클래스이다.

  • request: HTTP 요청 객체로 MultipartRequest와 연결할 request객체를 의미한다.
  • saveDirectory: 업로드한 파일을 저장할 디렉토리 경로입니다. 즉 서버측에 저장될 경로
  • maxPostSize: HTTP 요청의 최대 크기
  • encoding: HTTP 요청의 인코딩 방식을 지정합니다. 기본값은 "ISO-8859-1"입니다.
  • policy : 파일중복처리를 위한 인자를 의미한다.

 

 3). 파일 업로드 완료 폼작

파일 업로드가 완료된 후에는 사용자에게 업로드 완료 메시지를 보여주는 JSP 폼을 구현한다.

 

2. COS라이브러리를 활용한 파일업로드

cos.jar
0.05MB

 - WEB-INF/lib 폴더에 넣는다.

 

3. 파일업로드 예제

<%@ 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 action="fileUpload.jsp" method="post" enctype="multipart/form-data">
<table border=1>
	<tr>
	 <td colspan=2 align=center><h3>파일 업로드</h3></td>
	</tr>
	<tr>
	 <td>Upload : </td><td><input type="text" name="name"></td>
	</tr>
	<tr>
	 <td>Title : </td><td><input type="text" name="subject"></td>
	</tr>
	<tr>
	 <td>FileName1 : </td><td><input type="file" name="filename1"></td>
	</tr>
	<tr>
	 <td>FileName2 : </td><td><input type="file" name="filename2"></td>
	</tr>
	<tr>
		<td colspan=2 align=center>
		<input type="submit" value="전송"></td>
	</tr>
</table>
</form>
</body>
</html>

4. 파일업로드처리

<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String uploadPath = application.getRealPath("/upload");
	int size = 10*1024*1024;
	String name="";
	String subject="";
	String filename1="";
	String filename2="";
	String origfilename1="";
	String origfilename2="";
	try{
		// 생성자 업로드
		MultipartRequest multi = new MultipartRequest(request,uploadPath, size, "utf-8", new DefaultFileRenamePolicy());
		name = multi.getParameter("name");
		subject = multi.getParameter("subject");
		Enumeration files = multi.getFileNames();
		String file1 = (String)files.nextElement(); 
		filename1 = multi.getFilesystemName(file1); 
		origfilename1 = multi.getOriginalFileName(file1); // 올린파일명
		String file2 = (String)files.nextElement();
		filename2 = multi.getFilesystemName(file2);  // 실제 저장
		origfilename2 = multi.getOriginalFileName(file2);
	}catch(Exception e){
		e.printStackTrace();
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>FileUpload</title>
</head>
<body>
<form name="filecheck" action="fileCheck.jsp" method="post">
<input type="hidden" name="name" value="<%=name %>">
<input type="hidden" name="subject" value="<%=subject %>">
<input type="hidden" name="filename1" value="<%=filename1 %>">
<input type="hidden" name="filename2" value="<%=filename2 %>">
<input type="hidden" name="origfilename1" value="<%=origfilename1 %>">
<input type="hidden" name="origfilename2" value="<%=origfilename2 %>">
</form>
 <a href="#" onclick="javascript:filecheck.submit()">
 다운로드 페이지로 이동하기</a>
</body>
</html>

 

 

5. 다운로드 확인폼

클릭시 다운

\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myWeb\upload 이 경로에 파일이 저장되고 업로드된 파일 클릭시 다운이 가능하다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	String name=request.getParameter("name");
	String subject = request.getParameter("subject");
	String filename1 = request.getParameter("filename1");
	String filename2 = request.getParameter("filename2");
	String origfilename1 = request.getParameter("origfilename1");
	String origfilename2 = request.getParameter("origfilename2");
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 업로드 확인</title>
</head>
<body>
Upload : <%=name %><br>
Title : <%=subject %><br>
Filename1 : <a href="/myWeb/upload/<%=filename1 %>"><%=origfilename1 %></a><br>
Filename2 : <a href="/myWeb/upload/<%=filename2 %>"><%=origfilename2 %></a><br>
</body>
</html>

 

 

 

728x90
반응형
LIST

'JAVA > JSP' 카테고리의 다른 글

JSP - 표현언어(Expression Language)  (0) 2023.03.10
JSP - 파일업로드(자카르타API)  (0) 2023.03.10
Session  (0) 2023.03.10
Cookie  (0) 2023.03.10
JSP 개인프로젝트(12) - 게시판만들기(댓글관리)  (0) 2023.03.09