본문 바로가기
✨ Back-end/Spring-Legacy

[Spring-Legacy] 파일 데이터 업로드하기 multipart/form-data

by 환풍 2023. 9. 8.
728x90

 

jsp

 

multipart/form-data를 사용하는 경우, 폼 데이터는 일반적인 텍스트 데이터와 함께 이진 데이터(파일 업로드)를 포함하는 멀티파트 형식으로 전송된다. 이 형식을 사용하면 서버에서 이진 파일 데이터를 정확하게 해석하고 처리할 수 있다.

 

 

jsp

저장버튼을 누르면 이벤트가 발생되도록 하기위해 id에 save를 넣어주었다.

jsp

jQuery구문으로 클릭시 each를 이용해 각각 값들을 출력해본다.

 

 

작성자, 제목, 비밀에 대한 길이를 모두 조회하여 0이면 특정 이벤트가 발생되도록 할 것이다.

 

 

jsp

 

이렇게 inputText 값을 넣어주고 저장을 눌렀는데

 

Controller

값이 안넘어 가있다. 왜그럴까?

 

servlet-context.xml

beans에 multipartResolver를 추가해줘야한다.

System.out.println(file) 추가해주기.

컨트롤러에서 MultipartFile 객체를 불러와 데이터를 추가해주고,

 

 

jsp에 있는 name 값이 넘어오므로 변수명을 맞춰준다.

 

페이지에서 데이터와 파일을 선택해 넣고 저장버튼을 누르면,

 

위와 같이 데이터가 들어간걸 확인할 수 있다.

 

 

upload 폴더를 생성해서 경로를 loc에 박아주었다. 경로는 properties에서 확인할 수 있다.

 

그래서 이렇게 사진을 넣고 저장하면 해당 경로에 들어온 것을 확인할 수 있다.

 

VO에 fileName 변수를 추가하고, 컨트롤러에서 vo에 파일 이름도 저장해준다.

 

DB 테이블도 만들어주었다.

 

 

Service에서 인터페이스를 만들어주고, Dao 인터페이스에서도 똑같이 복붙해준다.

ServiceImpl, DaoImpl

 

ServiceImpl 이랑 DaoImpl에 모두 Override 시켜준다.

ServiceImpl

 

DaoImpl

 

 

 

 

 

 

 

새로운 글이면 new 표시를 하게 했다.

 

 

mybatis-config

 

Mapper

 

이렇게 하고 컨트롤러에서 찍어보면 데이터가 잘 들어가는 것을 확인할 수 있다.

이때 쓰인 parameterType은 생략가능하다.

 


Mapper

mapper에서 사진까지 나올 수 있도록 SELECT문을 만들어준다.

DaoImp, ServiceImp

물론 ServiceImpl 에도 이전과 똑같은 작업으로 Dao를 받아오도록 해줘야 정상적으로 실행이 된다.

 

Controller

model에 List를 담아서 이렇게 list.jsp에 뿌려주었다.

 

list.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>   

해당 태그 라이브러리를 추가해주고, jstl을 써서 리스트를 뽑아내주었다.

 


결과화면

 

반응형

댓글