※ 직접 풀이를 진행하였기 때문에, 정답에 오류가 있을 수 있습니다.
오류를 발견 시, 댓글로 남겨주시면 감사하겠습니다..!
※ 소스 코드는 Copy & Paste를 하면 제대로 출력되지 않아서,
최하단에 별도의 첨부파일로 제공합니다.
쉽게 배우는 JSP 웹 프로그래밍 (송미영 저)
form 태그의 method 속성은 무조건 POST 방식을 써야 함
form 태그의 enctype 속성은 무조건 multipart/form-data를 써야 함
form 태그의 action 속성은 파일 업로드를 처리할 jsp 파일을 설정해야 함
input 태그의 type 속성은 file로 설정해야 함
브라우저에서 서버로 파일 업로드 - 서버가 요청 파라미터를 분석하여 파일을 찾음 - 서버의 디렉토리에 저장
cos.jar 파일은 아래 링크에 첨부되어 있습니다.
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>");
}
}
commons 파일들은 아래 링크에 첨부되어 있습니다.
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>
[쉽게 배우는 JSP 웹 프로그래밍] 8장 연습문제 답안 (1) | 2021.03.26 |
---|---|
[쉽게 배우는 JSP 웹 프로그래밍] 8장 '유효성 검사' 정리 요약 (0) | 2021.03.24 |
[쉽게 배우는 JSP 웹 프로그래밍] 7장 '파일 업로드' 정리 요약 (0) | 2021.03.22 |
[쉽게 배우는 JSP 웹 프로그래밍] 6장 연습문제 답안 (0) | 2021.03.21 |
[쉽게 배우는 JSP 웹 프로그래밍] 6장 '폼 태그' 정리 요약 (0) | 2021.03.17 |