서블릿 JSP

JSP MultipartRequest로 파일 업로드

짱코딩러 2022. 9. 29. 12:21

MultipartRequest는 COS.jar라이브러리에 존재하는 클래스 이기 때문에

[1] 먼저 WebContenet/WEB-INF/lib 에 COS.jar를 넣어 준다.

 

[2] 파일을 전송하기 위해서는 jsp의 폼태그 속성을 method="post" enctype="multipart/form-data" 로 적용해 주고

input태그의 타입은 file로 설정 해 준다.

<form name="frm" method="post" enctype="multipart/form-data">
	<input type="file" name="img">

 

[3] jsp에서 받은 데이터를 VO에 저장하고, DAO로 insert해준다.

// 업로드 크기 제한
int sizeLimit = 5 * 1024 * 1024;
// 다운받는 경로
String savePath = "image";
ServletContext context = session.getServletContext();
// 서버상의 실제 디렉토리
String uploadFilePath = context.getRealPath(savePath);
MultipartRequest multi = new MultipartRequest(request, // 1. 요청 객체
	uploadFilePath, // 2. 업로드될 파일이 저장될 파일 경로명
	sizeLimit, // 3. 업로드될 파일의 최대 크기(5Mb)
	"UTF-8", // 4. 인코딩 타입 지정
	new DefaultFileRenamePolicy() // 5. 덮어쓰기를 방지 위한 부분
); // 이 시점을 기해 파일은 이미 저장이 되었다

ReviewVO reviewVO = new ReviewVO();
//request를 담고있는 multi를 이용해 업로드 된 파일의 이름 set
reviewVO.setImg(multi.getFilesystemName("img"));

ReviewDAO reviewDAO = ReviewDAO.getInstance();
reviewDAO.insertReview(reviewVO);

 

[+] 수정(update)하기 위해 값을 넘겨 받을 때는

jsp에 미리 이전 값을 저장해두고

<input type="hidden" name="origin_img" value="${reviewVO.img}">

이렇게 적용해주었음

if (multi.getFilesystemName("img") == null) {
   reviewVO.setImg(multi.getParameter("origin_img"));
} else {
   reviewVO.setImg(multi.getFilesystemName("img"));
}

 

'서블릿 JSP' 카테고리의 다른 글

JSP 조인한 테이블로 데이터 가져오기  (0) 2022.10.02
JSP DB연동하기, 커넥션 풀(DBCP)  (0) 2022.09.30
Servlet EL, JSTL태그  (0) 2022.09.22
Servlet 자바빈, 액션태그  (0) 2022.09.18
Servlet 저장소  (0) 2022.09.17