FireDrago
[JSP] MultipartRequest 사용하여 파일 입력받기 본문
JSP에서 회원 사진이나, 추가적인 정보를 입력받기 위해서는 파일을 입력받아야 할 때가 있다.
이를 위해 MultipartRequest 객체를 사용한다.
우선 library 폴더에 cos.jar 을 넣어줘야 한다. 다운로드 -> http://www.servlets.com/cos/

우선 form 태그로 입력받을때 method="post" enctype="multipart/form-data" 반드시 입력해야 한다.
<form action="sign_process.jsp" method="post" enctype="multipart/form-data">
form 으로부터 파라미터를 전달받은 페이지에서는 다음과 같이 import를 해준다.
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
String filepath = request.getServletContext().getRealPath("upload");
MultipartRequest multi = new MultipartRequest(request,filepath,3*1024*1024,"UTF-8",new DefaultFileRenamePolicy());
위의 코드에서는 받은 파일을 저장할 경로를 filepath에 담고 , 객체생성의 인자로 전달했다.
(upload 폴더는 반드시 프로젝트 루트파일 안에 있어야 한다.)
MultipartRequest 객체를 생성할때
1. request 2. 파일저장경로 3. (byte) 저장용량 4. 인코딩방식 5. 파일중복 처리방식
5개의 파라미터가 필요하다.
일반적인 String 형식의 파라미터 네임과 값은 Request와 사용방식이 동일하다.
String name = multi.getParameter("name");
int age = Integer.parseInt(multi.getParameter("age"));
반면 파일을 전달받은 경우에는 getFilesystemName ("파라미터명") 으로 파일의 이름을 가져온다.
이를 출력시 경로에 붙여넣거나 객체에 저장해주면 된다.
String file_name = multi.getFilesystemName("img");
앞에서 배운 내용을 토대로,
회원가입시 사진을 입력받아 미리 정의한 Member 객체에 넣고, List 객체에 ArrayList 형식으로 넣는
회원가입 코드를 짜보았다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="dto.Member" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.io.File" %>
<%@ page import="dao.List" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String filepath = request.getServletContext().getRealPath("upload");
MultipartRequest multi = new MultipartRequest(request,filepath,3*1024*1024,"UTF-8",new DefaultFileRenamePolicy());
String name = multi.getParameter("name");
int age = Integer.parseInt(multi.getParameter("age"));
String file_name = multi.getFilesystemName("img");
Member mb = new Member();
mb.setName(name);
mb.setAge(age);
mb.setFile(file_name);
List list = List.getInstance();
list.save(mb);
response.sendRedirect("main.jsp");
%>
</body>
</html>'프로그래밍 > 템플릿 엔진(thymeleaf, jsp)' 카테고리의 다른 글
| [JSP] Filter로 로그기록 만들기 (0) | 2023.06.19 |
|---|---|
| [JSP] web.xml 파일을 이용한 예외처리 (0) | 2023.06.19 |
| [JSP] 초간단 CRUD 구현(2) (0) | 2023.06.18 |
| [JSP] 초간단 CRUD 구현 (0) | 2023.06.18 |
| [JSP] 액션태그 (0) | 2023.06.14 |
