본문 바로가기

웹 - 서버

웹 - 파일 업로드(톰캣 9버전)/ 파일 백업/복구

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
	function send(f) {
		
		let title = f.title.value.trim();
		let photo = f.photo.value;
		
		if(title==''){
			alert('제목을 입력하세요!!');
			f.title.value="";
			f.title.focus();
			return;
		}
		
		if(photo==''){
			alert('사진을 선택하세요!!');
			return;
		}
		
		f.action = "upload.do";	// FileUploadAction
		f.submit();
	}// end:send()
</script>

</head>
<body>
	<!-- File Upload조건 
		1. method = "POST"
		2. entype="multipart/form-data"
	-->
	<form method="POST" enctype="multipart/form-data">
		제목 : <input name="title"><br>
		사진 : <input type="file" name="photo">
			  <input type="button" value="전송" onclick="send(this.form);">
	</form>
</body>
</html>

 

 

-> 서버를 9버전으로 활용

 

 

 

 

 

*)실제 실행경로와 프로그램 편집 경로는 다르다.

 

)파일업로드 서블릿

package action;

import java.io.File;
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

/**
 * Servlet implementation class FileUploadAction
 */
@WebServlet("/upload.do")
public class FileUploadAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// /upload.do?title=제목&photo=a.jpg
		// String saveDir = "F:\\dev\\upload"; // upload 위치
		String webPath  = "/upload/"; // 웹(URL)경로
		
		// 현재 웹어플리케이션의 전역관리객체(상대경로->절대경로)
		ServletContext application = request.getServletContext();
		//				  웹(상대)경로 -> 절대경로 구하기 (과정 꼭 필요!!!)
		String saveDir = application.getRealPath(webPath); 
		System.out.println(saveDir);
		int	   maxSize = 1024 * 1024 * 100; // 최대업로드크기 (100MB)
		// FileUpload객체 => MultipartRequest
		MultipartRequest mr = new MultipartRequest(
										request, 	 // request 위임
										saveDir,     // 저장위치
										maxSize, 	 // 최대업로드크기
										"utf-8", 	 // 수신인코딩
										// 화일이름이 동일할 경우 다른 이름으로 변경시키는 객체
										new DefaultFileRenamePolicy() 
										);	
		// 업로드화일명을 얻어온다
		String filename = "no_file";
		// mr에 의해서 업로드된 화일정보 얻어온다
		File f = mr.getFile("photo");
		
		if(f!=null) { //업로드화일 존재하면
			
			filename = f.getName();
			f.getAbsolutePath();
		}		
			
		// 업로드화일 외에 다른 파라메터는 mr로 수신해야 된다
		String title = mr.getParameter("title");
		//System.out.println(title);
		
		// request binding
		request.setAttribute("title", title);
		request.setAttribute("filename", filename);
		
		// Dispatcher형식으로 호출
		String forward_page 	= "result1.jsp";
		RequestDispatcher disp  = request.getRequestDispatcher(forward_page);
		disp.forward(request, response);

	}

}

 

)결과 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>
제목: ${ title }
<hr>
<img src="upload/${ filename }" width="200">
</body>
</html>

 

)사진 2개 올리기

=> 1개와 똑같음 모두 2개씩

 

)백업/ 복구 파일 (실행 프로젝트의 구조를 잘 파악해야 함)

backup.bat
0.00MB
restore.bat
0.00MB