[JSP] Ch07 file upload 파일업로드 사진! commons-FileUpload 방식

jychae·2022년 11월 3일
0

JSP

목록 보기
2/9

fileupload04.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>
	<form name="fileForm" action="fileupload04_process.jsp" method="post" enctype="multipart/form-data" >
		<p> 이름: <input type="text" name="name"/></p>
		<p> 제목: <input type="text" name="subject"/></p>
		<p> 파일: <input type="file" name="filename" multiple="multiple"/></p>
		<p>	<input type="submit" value="파일올리기" /></p>
	</form>
</body>
</html>

fileupload04_process.jsp

<%@page import="org.apache.commons.fileupload.DiskFileUpload"%>
<%@page import="java.util.Iterator"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String path = "C:\\upload";
	File tempFile = new File(path);
	if(!tempFile.exists()){
		tempFile.mkdirs();
	}
	
	// commons-FileUpload를 이용하여 파일을 업로드 하려면 먼저 commons-FileUpload
	// 파일 업로드를 위해 패키지에 포함되어 있는 DiskFileUpload 객체를 생성함
	DiskFileUpload upload = new DiskFileUpload();
		// 업로드할 파일의
	   upload.setSizeMax(10000000); // 업로드할 파일의 최대 크기(byte) - 1 ~ 무한대까지 올릴 때 모든 파일의 사이즈 크기 (파일을 전부를 합한 크기)
	   upload.setSizeThreshold(4096); // 메모리상에 저장할 최대 크기(byte)
	   upload.setRepositoryPath(path); // 업로드된 파일을 입시로 저장할 경로
	   
	   // 생성된 객체를 통해 DistFileUpload 클래스가 제공하는 메소드를 사용하여 웹 브라우저가 전송한
	   // multipart/form 유형의 요청 파라미터를 가져온다.
	   // 폼 페이지 에서 전동 된 요청 파라미터를 전달받도록 DiskFileUpload 객체 타입의 parseRequest() 메소드를 작성
	   List items = upload.parseRequest(request);
	   // 폼 페이지에서 전송된 요청 파라미터를 Iterator 클래스로 변환
	   Iterator params = items.iterator();
	   
	   int maxSize = 4 * 1024 * 1024;      // 4MB 파일업로드 max 사이즈 설정
	   while(params.hasNext()) {
	      FileItem item = (FileItem) params.next();
	      
	   // FileItem 클래스의 메소드를 사용하여 요청 파라미터가 일반 데이터인지 파일인지 분석 및 처리하여 파일을 업로드함   
	   if(item.isFormField()) {		// 폼 페이지에서 전송된 요청 파라미터가 일반 데이터라면~
	      String name = item.getFieldName();
	      String value = item.getString("UTF-8");
	      out.println(name + " = " + value + "<br/>");
	   } else {				// 폼 페이지에서 전송된 요청 파라미터가 파일이라면~
	      String fileFieldName = item.getFieldName();
	      String fileName = item.getName();
	      String contentType = item.getContentType();
	      
	      fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
	      long fileSize = item.getSize();
	      
	      File file = new File(path + "/" + fileName);
	      
	      // 개당 파일 최대 사이즈 초과시 알림
	      if(maxSize < fileSize) {
	         out.println("이미지 크기를 초과하였습니다!<br/>");
	      } else {
	         item.write(file);
	      }

			
			out.println("----------------------<br/>");
			out.println("요청 파라미터 이름 :" + fileFieldName + "<br/>");
			out.println("저장파일 이름 :" + fileName + "<br/>");
			out.println("파일 콘텐츠 타입 :" + contentType + "<br/>");
			out.println("파일 크기 :" + fileSize + "<br/>");
			
		}
		
	}
	
%>
profile
안녕하세요! 초보개발자 공부 시작!

0개의 댓글