주니 개발 도서관

Spring

[ 이미지 업로드 ] 간편하게 Spring으로 표현

주니홍 2022. 9. 28. 15:12

 

 

이전 JSP 프로젝트에서 중개사가 매물을 등록하기 위해 이미지 업로드를 표현한 적이 있다

 

까다롭다고 생각했던 이미지 업로드를 Spring을 통해 간편하게 이용해보자

 

 

일단 파일 업로드를 사용하기위해 자르파일을 생성해야한다 ( Pom.xml )

 

스프링에서 제공하는 MultipartResolver를 설정해 주어야 한다

( Resolver 이므로 DispatcherSevlet.xml 에서 생성한다 )

id 값과 주입할 name값은 Spring에서 제공하는 " 형식 " 이기 때문에 지켜주어야 한다

value 값은 허용할 파일크기를 뜻한다. ( -1 일경우 무제한 )

 

 

 

이미지 데이터를 Command 객체에 세팅하기 위해서는

이미지 데이터를 담아줄 VO에 멤버변수가 필요하다!

 

스프링에서 제공하는 이미지데이터를 담아줄 MultipartFile 클래스 객체를 생성

등록한 이미지파일을 DB 테이블에 담아줄 변수도 함께 생성해 준다

 

 

이미지 데이터를 담아줄 수 있도록 form 태그에 속성을 만들어준다

 

 

Command 객체로 등록한 vo에 자동으로 이미지데이터도 담김

( MultipartFile 객체 멤버변수 )

 

노란박스

자동으로 담긴 MultipartFile 멤버변수를 꺼내 편하게 쓸수 있도록 uploadFile 객체로 넣는다

** 등록한 파일이름을 알 수 있는 uploadFile.getOriginalFilename()을 이용가능

 

빨간박스

이미지 이름을 DB에 저장하기위해 만든 멤버변수에

디폴트값으로 보여줄 이미지를 먼저 set하여 저장한다

 

초록박스

if문 조건으로 uploadFile.isEmpty() 메서드를 이용하여

이미지를 업로드한 파일의 존재여부를 확인할 수 있다

( 파일이 존재하지 않다면 true, 파일이 존재한다면 false )

( ! 를 이용하여 파일이 존재할시 조건문 안으로 들어옴 )

 

uploadFile.getOriginalFilename() 으로 파일명을 String 변수에 담아주고

빨간 박스에서 디폴트로 설정한 set을 덮어씌워준다

uploadFile.transferTo( File 객체 )메서드를 이용하여

File 객체 인자로는 경로 + 등록할 이미지이름을 String으로 넣어주게되면

경로에 맞게 이미지 이름으로 업로드 된다

 

 

 

 

DB에서 이미지 이름을 담아줄 UPLOADFILE칼럼을 추가하고

insert 관련 SQL 내용을 수정해 주었다

 

? 값이 하나더 필요함에 따라

Controller에서 uploadFile.getOriginalFilename()로 담아준 이름객체를 등록하여

uploadFile.transferTo( File 객체 )메서드를 이용하여 생성한 이미지이름과 동일하도록

DB에 저장시켜준다

 

** 칼럼이 하나 추가되었기 때문에, 그 값을 담아줄수 있도록 RowMapper에 추가시켜준다

 

 

RowMapper에 설정하여 board에서 글에 등록한 이미지 이름을 꺼낼수 있게 되었다

상세페이지에서 등록한 이미지를 볼수 있도록 EL식으로 표현하여준다