JSP에서 웹페이지에서 등록한 이미지를 서버에 저장하는 방법
JSP 웹 페이지를 제작하다 보니 이미지를 업로드해야 할 상황이 생겼다.
DB에는 경로만 등록시키고 실제 파일은 서버에 저장하는 방식으로 구현해 보았다.
사용 라이브러리
- cos.jar
cos-20.08.zip을 다운로드한다.
압출을 해제하면 cos.jar이 나오게되는데 이것을 본인의 프로젝트에 있는 webapp/WEB-INF/lib에 넣으면 된다.
cos.jar을 사용하는 이유
JSP에서 cos.jar의 패키지를 사용하게 되는 이유는 cos.jar을 톰캣에서 기본적으로 지원하지 않는 외부 패키지이기 때문이다. 외부 패키지를 사용할 때는 WEB/lib에 위치해야 하며, 앞으로 사용할 multipart/form-data로 전송하는 폼에 담긴 파라미터들에 대한 이름과 값을 얻어내기 위해, <input type="file">로 지정된 파일 서버상의 한 폴더에 업로드하기 위해서 특별한 컴포넌트가 필요하며 cos.jar에는 필요한 컴포넌트가 존재한다.
즉, 우리의 원활한 이미지 전송과 컨트롤을 위해 필요한 외부 패키지라는 뜻이다.
그럼 우선 이미지를 넣을 폼을 만들어 보자
fileupload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 이미지 업로드 폼</title>
</head>
<body>
<h2>JSP이미지 업로드</h2>
<form action="fileUploadAction.jsp" method="post" enctype="multipart/form-data">
이미지 : <input type="file" name="uploadfiles"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
이미지를 업로드 할때는 form의 enctype에 multipart/form-data를 추가해주어야 한다.
만약 multipart/form-data를 추가 해주지 않으면 이미지가 저장되지 않는다.
multipart/form-data에 대해선 추후 다시 다루도록 하겠다.
fileUploadAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="test.Test"%>
<%@page import="test.TestDAO"%>
<%
TestDAO test = new TestDAO();
int fileSize = 1024*1024*3; //3mb로 파일 크기를 제한
ServletContext context = getServletContext();
String uploadPath = context.getRealPath("/uploadFiles");
MultipartRequest multi = null;
try{
multi = new MultipartRequest(request, uploadPath, fileSize, "UTF-8",new DefaultFileRenamePolicy());
String originalFile = multi.getOriginalFileName("uploadfiles");
String uploadFile = multi.getFilesystemName("uploadfiles");
}catch(Exception e){
out.write("업로드 용량 오류 또는 그 이외..." + e.getMessage());
}
%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
이 두가지는 cos.jar을 추가해야만 생성된다.
'개발 > JSP' 카테고리의 다른 글
multipart/form-data란?[JSP] (0) | 2021.11.19 |
---|---|
현재 내 웹페이지 경로 확인하기[JSP] (0) | 2021.11.19 |
[JSP] DecimalFormat 천단위 콤마, .jsp에서 출력하기 (0) | 2021.08.23 |
[JSP][mysql][mariadb] 다중 쿼리 입력하기 (0) | 2021.08.09 |
[JSP] 접속/접속자 IP 확인하기 (0) | 2021.08.09 |