JSP

MultipartRequest를 이용한 파일 업로드

hs_developer 2022. 7. 19. 23:48

MultipartRequest를 이용하기 위한 라이브러리

 

cos.jar
0.05MB

 

 


 

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);

 

 

 

참고

http://zero-gravity.tistory.com/168