AngelPlayer`s Diary

※ 직접 풀이를 진행하였기 때문에, 정답에 오류가 있을 수 있습니다.

오류를 발견 시, 댓글로 남겨주시면 감사하겠습니다..!

 

※ 소스 코드는 Copy & Paste를 하면 제대로 출력되지 않아서,

최하단에 별도의 첨부파일로 제공합니다.

 

쉽게 배우는 JSP 웹 프로그래밍 (송미영 저)

 

 

 

01. 

form 태그의 method 속성은 무조건 POST 방식을 써야 함

form 태그의 enctype 속성은 무조건 multipart/form-data를 써야 함

form 태그의 action 속성은 파일 업로드를 처리할 jsp 파일을 설정해야 함

input 태그의 type 속성은 file로 설정해야 함

 

 

 

02.

브라우저에서 서버로 파일 업로드 - 서버가 요청 파라미터를 분석하여 파일을 찾음 - 서버의 디렉토리에 저장

 

 

 

03.

cos.jar 파일은 아래 링크에 첨부되어 있습니다.

angelplayer.tistory.com/150

 

 

 

fileupload01.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 action="fileupload01_process.jsp" method="POST" enctype="multipart/form-data">
		<p>이름 : <input type="file" name="filename"></p>
		<input type="submit" value="파일 업로드">
	</form>
</body>
</html>

 

fileupload01_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="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());
	
	Enumeration files = multi.getFileNames();
	
	while (files.hasMoreElements()) {
		String name = (String) files.nextElement();
		String filename = multi.getFilesystemName(name);
		String original = multi.getOriginalFileName(name);
		String type = multi.getContentType(name);
		File file = multi.getFile(name);
		
		out.println("요청 파라미터 이름 : " + name + "<br />");
		out.println("실제 파일 이름 : " + filename + "<br />");
		out.println("저장 파일 이름 : " + original + "<br />");
		out.println("파일 컨텐츠 유형 : " + type + "<br />");
		
		if (file != null) {
			out.println("파일 크기 : " + file.length());
			out.println("<br>");
		}
	}

 

 

 

04.

commons 파일들은 아래 링크에 첨부되어 있습니다.

angelplayer.tistory.com/150

 

 

fileupload02.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 action="fileupload02_process.jsp" method="POST" enctype="multipart/form-data">
		<p>이름 : <input type="file" name="filename"></p>
		<input type="submit" value="파일 업로드">
	</form>
</body>
</html>

 

fileupload02_process.jsp

<%@page import="org.apache.commons.io.FilenameUtils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String fileUploadPath = "c:\\upload";
	
		DiskFileUpload upload = new DiskFileUpload();
		
		List items = upload.parseRequest(request);
		
		Iterator params = items.iterator();
		
		while (params.hasNext()) {
			FileItem fileItem = (FileItem) params.next();
			if (!fileItem.isFormField()) {
				String fileName = fileItem.getName();
				fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
				File file = new File(fileUploadPath + "/" + fileName);
				fileItem.write(file);
			}
			
			String name = (String) fileItem.getFieldName();
			String filename = fileItem.getName();
			if (filename != null) {
			    filename = FilenameUtils.getName(filename);
			}
			String type = fileItem.getContentType();
			long fileSize = fileItem.getSize();
			
			out.println("요청 파라미터 이름 : " + name + "<br />");
			out.println("저장 파일 이름 : " + filename + "<br />");
			out.println("파일 컨텐츠 유형 : " + type + "<br />");
			out.println("파일 크기 : " + fileSize + "<br />");		
		}
				
	%>
</body>
</html>

 

 

ch07.zip
0.00MB

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band