쌍용교육(JAVA)/JSP
쌍용교육 -JSP수업 47일차 fileupload
구 승
2024. 4. 24. 15:29
s01_fileForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 업로드</title>
</head>
<body>
<form action="/ch03_JSP/fileUpload" method="post" enctype="multipart/form-data">
작성자<input type="text" name="user"><br>
제목 <input type="text" name="title"><br>
파일명 <input type="file" name="uploadFile"><br>
<input type="submit" value="파일 올리기">
</form>
</body>
</html>
ch03_JSP => src/main/java => kr.web.ch05 =>
UploadServlet.java
package kr.web.ch05;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
/*
* maxFileSize : 개별 파일의 전송 가능한 최대 크기
* maxRequestSize : 전송되는 모든 파일의 용량을 합친 최대 크기
*/
@MultipartConfig(
maxFileSize = 1024*1024*5,
maxRequestSize = 1024 *1024 * 50
)
@WebServlet("/fileUpload")
public class UploadServlet extends HttpServlet{
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
//컨텍스트 경로상의 파일 업로드 절대 경로 구하기
String realFolder =
request.getServletContext().getRealPath("/upload");
//문서 타입 및 캐릭터셋 지정
response.setContentType("text/html;charset=utf-8");
//POST 방식으로 전송된 데이터 인코딩 타입 지정
request.setCharacterEncoding("utf-8");
//HTML 출력을 위한 출력 스트림을 생성
PrintWriter out = response.getWriter();
try {
out.println("작성자 :"
+request.getParameter("user")+"<br>");
out.println("제목 :"
+request.getParameter("title")+"<br>");
out.println("----------------------------<br>");
out.println("파일 업로드 절대 경로 : "+realFolder +"<br>");
Part part = request.getPart("uploadFile");
String fileName = part.getSubmittedFileName();
if(!fileName.isEmpty()) {
//지정한 경로에 파일을 저장
part.write(realFolder+"/"+fileName);
out.println("파라미터명 : " + part.getName()+"<br>");
out.println("컨텐트 타입 :" +part.getContentType()+ "<br>");
out.println("파일명 : "+fileName + "<br>");
out.println("파일 크기 : " + part.getSize() + "bytes<br>");
out.println("-------------------------------<br>");
}
}catch(IllegalStateException e) {
out.println("용량초과 : "+ e.toString());
}
}
}
절대경로를 복사해서 탐색기에 검색하면 업로드한 사진이 나온다.
s02_fileMutiForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 다중 업로드 예제</title>
</head>
<body>
<form action="/ch03_JSP/fileMultiUpload" method="post" enctype="multipart/form-data">
이름:<input type="text" name="name"><br>
제목:<input type="text" name="title"><br>
이미지1:<input type="file" name="uploadFile1" accept="image/gif,image/png,image/jpeg"><br>
이미지2:<input type="file" name="uploadFile2" accept="image/gif,image/png,image/jpeg"><br>
<input type="submit" value="파일 올리기">
</form>
</body>
</html>
UploadServlet2.java
package kr.web.ch05;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@MultipartConfig(
maxFileSize = 1024*1024*10,
maxRequestSize = 1024 * 1024 *50
)
@WebServlet("/fileMultiUpload")
public class UploadServlet2 extends HttpServlet{
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
//컨텍스트 경로상의 파일 업로드 절대 경로 구하기
String realFolder =
request.getServletContext().getRealPath("/upload");
//문서 타입 및 캐릭터셋 지정
response.setContentType("text/html;charset=utf-8");
//POST 방식으로 전송된 데이터 인코딩 타입 지정
request.setCharacterEncoding("utf-8");
//HTML 출력을 위한 출력 스트림을 생성
PrintWriter out = response.getWriter();
try {
out.println("작성자 :"
+request.getParameter("name")+"<br>");
out.println("제목 :"
+request.getParameter("title")+"<br>");
out.println("----------------------<br>");
/*
Part part1 = request.getPart("uploadFile1");
String fileName = part1.getSubmittedFileName();
if(!fileName.isEmpty()) {
part1.write(realFolder+"/"+fileName);
out.println("<img src=\"/ch03_JSP/upload/"+part1.getSubmittedFileName()+"\">");
}
Part part2 = request.getPart("uploadFile2");
String fileName2 = part2.getSubmittedFileName();
if(!fileName2.isEmpty()) {
part2.write(realFolder+"/"+fileName2);
out.println("<img src=\"/ch03_JSP/upload/"+part2.getSubmittedFileName()+"\">");
}
*/
Collection<Part> parts = request.getParts();
for(Part p : parts) {
String name = p.getName();
String collecFileName = p.getSubmittedFileName();
if(collecFileName!=null && !collecFileName.isEmpty()) {
p.write(realFolder+"/"+collecFileName);
out.println("<img src=\"/ch03_JSP/upload/"+collecFileName+"\"><br>");
}
}
}catch(IllegalStateException e) {
out.println("용량 초과 :" + e.toString());
}
}
}