jsp 파일 업로드

코드 죄수 2022. 10. 11. 19:21

servlets.com 사이트에서 cos.jar를 다운 받아야함

 

cos.zip을 다운 받고 안에있는 jar를 

 

lib 폴더 안에 넣으면 이제 업로드 할 수 있는 환경이 만들어 진것이다.

 

 

파일 업로드 페이지를 만든다.

 

form 태그 안에 entype으로 multipart/form-data를 적어 주어야 파일을 다음 페이지로 넘길 수 있다!

<%@ 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>
<CENTER>
	<form action="fileUpload.jsp" method="post" enctype="multipart/form-data"> 
    	// 타입을 이렇게 적어주어야 파일을 넘길 수 있다
		<table border="1">
			<thead>
				<th colspan="2">파일 업로드 폼</th>
			</thead>
			<tbody>
				<tr>
					<td>
						올린사람 :
					</td>
					<td>
						<input type="text" name="name">
					</td>
				</tr>
				<tr>
					<td>제목:</td>
					<td><input type="text" name="subject"></td>
				</tr>
				<tr>
					<td>파일명1:</td>
					<td><input type="file" name="file1"></td>
				</tr>
				<tr>
					<td>파일명2:</td>
					<td><input type="file" name="file2"></td>
				</tr>
				<tr>
					<td colspan="2" align="center"><input type="submit" value="전송"></td>
				</tr>
			</tbody>
		</table>
	</form>
</CENTER>
</body>
</html>

 

파일을 다운받아서 폴더에 넣을 페이지 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="java.util.*" %>
<%
	String uploadPath=request.getRealPath("upload"); // 경로 upload라는 파일에 저장 할 것

	int size = 10*1024*1024;	//크기
	String name="";	
	String subject = "";
	String file1 ="";
	String file2 ="";
	
	try{
		MultipartRequest multi = new MultipartRequest(
				request, 
				uploadPath, //저장 위치
				size, //크기
				"euc-kr", //인코딩
				new DefaultFileRenamePolicy());//파일 중복 확인
		
		name = multi.getParameter("name");
		subject = multi.getParameter("subject");
		
		Enumeration files = multi.getFileNames();
		
		String files1 = (String) files.nextElement();
		file1 = multi.getFilesystemName(files1);
		String files2 = (String) files.nextElement();
		file2 = multi.getFilesystemName(files2);
	}catch(Exception e){
		e.printStackTrace();
	}
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</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="file1" value="<%=file1 %>">
	<input type="hidden" name="file2" value="<%=file2 %>">
</form>
<a href="#" onclick="javascript:filecheck.submit()">업로드 확인 및 다운로드 페이지 이동</a>
</body>
</html>

 

폴더 위치는 그냥 이클립스 위치가 아니라 톰캣이 읽는 이클립스 경로에 만들어야함

 

C:\Users\user\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\프로젝트명

 

중간에 tmp0이 tmp1인 사람도 있음

 

만약 안되면 톰캣이 띄우는 오류에 경로가 있으니 확인 하고 폴더를 생성하면 된다.

 

 

파일을 누르면 파일이 열리게 된다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
   request.setCharacterEncoding("euc-kr");   
   String name=request.getParameter("name");
   String subject = request.getParameter("subject");
   String file1=request.getParameter("file1");
   String file2=request.getParameter("file2");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 업로드 확인 및 다운로드</title>
</head>
<body>
올린사람:<%=name %><br/>
제목:<%=subject %><br/>
파일명1:<a href="upload/<%=file1 %>"><%=file1 %></a><br/>
파일명2:<a href="upload/<%=file2 %>"><%=file2 %></a><br/>
</body>
</html>