MultipartRequest를 이용하기 위한 라이브러리
View.jsp
<!--
1. 전송하고자 하는 입력 폼을 <form>과 </form> 사이에 위치한다.
2. action 값을 데이터를 처리할 곳으로 설정한다.
3. method를 반드시 post로 설정한다.
4. enctype을 multipart/form-data로 설정한다.
<form></form> 사이에 input type submit 버튼을 위치 시킨다.
-->
<form action="<%= request.getContextPath() %>/test/test.do" method="post" enctype="multipart/form-data">
<회원가입 양식><br>
이름: <input type="text" name="m_name"><br>
별명: <input type="text" name="m_nickname"><br>
사진: <input type="file" name="m_file"><br>
<input type="submit" value="전송">
</form>
Java code
// 파일이 저장될 서버의 경로, 되도록이면 getRealPath 사용
String savePath= request.getServletContext().getRealPath("folderName");
// 파일 크기 15MB로 제한
int sizeLimit= 1024*1024*15;
MultipartRequest multi= new MultipartRequest(request, savePath, sizeLimit, "utf-8", new DefaultFileRenamePolicy());
/*
request: requst 객체
savePath: 저장될 서버 경로
sizeLimit: 파일 최대 크기
"utf-8": 인코딩 방식
new DefaultFileRenamePolicy(): 같은 이름의 파일명 방지 처리
*/
////// 아래는 전송 받은 데이터들을 DB 테이블에 저장하기 위한 작업 ///////
// MultipartRequest로 전송받은 데이터를 불러온다
// enctype을 "multipart/form-data"로 선언하고 submit한 데이터들은 request 객체가 아닌 MultipartRequest 객체로 불러와야 한다
String m_name= multi.getParameter("m_name");
String m_nickname= multi.getParameter("m_nickname")
// 전송 받은 데이터가 파일일 경우 getFilesystemName()으로 파일 이름을 받아올 수 있다
String fileName= multi.getFilesystemName("m_file");
// 업로드한 파일의 전체 경로를 DB에 저장
String m_fileFullPath= savePath + "/" + fileName;
// 데이터를 담을 그릇인 DTO(또는 Bean) 객체를 생성 후, 데이터를 set 해준다
MemberDTO memberDTO= new MemberDTO();
memberDTO.setM_name(m_name);
memberDTO.setM_nickname(m_nickname);
memberDTO.setM_fileFullPath(m_fileFullPath);
memberDTO.setM_fileName(m_fileName);
참고
'JSP' 카테고리의 다른 글
[수업] DBCP 세팅, DBCP를 이용한 명소 리스트 출력 (0) | 2022.07.22 |
---|---|
[수업] Bean, 액션 태그, Redirect/Forward (0) | 2022.07.21 |
자바 빈 getProperty, setProperty (0) | 2022.07.09 |
request.getParameter() (0) | 2022.07.09 |
PrintWriter script = response.getWriter(); (0) | 2022.07.02 |