pom.xml 파일에 프로젝트의 버전 변경 >> maven 프로젝트 업데이트 >> 한글 인코딩 작업 실행
이제 파일 업로드, 다운로드에 필요한 라이브러리를 추가할 것임
commons fileupload 라이브러리 추가할 것 >> 1.3.3 버전 >> pom.xml 에 추가
입, 출력을 담당하는 라이브러리 >> 2.4 버전 >> pom.xml 에 추가
class 파일로 bean 객체를 추가
기존에 servlet-context.xml 에서 빈 객체를 등록하던 방식을 클래스 파일에서 어노테이션을 사용해서 등록하여 사용
( 위 xml 파일은 어노테이션을 활용해서 작성하는 방법을 설명하기 위해 작성했으므로 xml 파일 내 빈 객체 등록 부분은 주석처리 하였음 )
파일 업로드 경로 작성 >> uploadForm.jsp 에 업로드 폼 작성 >> 파일 전송 시 이동될 경로 작성
Controller 에도 파일 받아서 처리할 url 경로 작성 및 넘어온 파일을 변수로 담아서 출력해봤음 >> service 쪽으로 받은 파일을 넘겨줌
파일 저장 로직 완성 ( 파일 명 앞에 저장 시간을 년월일시분초 형식으로 붙인 뒤 변수로 저장 경로를 지정하여 저장 )
DB 에 저장한 이미지의 이름을 저장해볼 것임
create table file_image(
id varchar(20) primary key,
name varchar(20),
img_name varchar(100)
);
sql 문 작성 및 실행
▼ DB 연동 작업 ▼
DB 연동에 필요한 라이브러리 추가
root-context.xml 작성
fileMapper.xml 세팅
▲ DB 연동 세팅 완료 ▲
DB 와 연동할 객체 DTO 작성
파일을 저장하지 않으면 DB 에 nan 으로 처리, 파일을 저장한다면 파일 명을 DB 에 저장
FileMapper 인터페이스에 메소드 추가
FileMapper.xml 파일에 sql 문 작성
FileMapper.xml 파일에 namespace 를 설정해주지 않아서 다시 고침
이미지 파일 전송해보니 정상적으로 파일 이름 DB 에 저장되는 모습
파일 저장도 되는 모습
( 현재 테이블에 id 값을 primary key 로 지정해놓아서 동일한 아이디로 파일 업로드를 하면 무결성 조건 에러가 발생되는데 이때, 정상적으로 파일은 디렉토리에 저장되지만 DB 에 파일명을 저장할때 무결성 조건 에러를 만나면서 DB 에 파일명이 저장되지는 않는다,,,, )
파일을 jsp 파일에 출력해볼 것임
경로 생성
Controller 에서 model 객체를 Service 에 전달, Service 에서는 Mapper 를 사용해 데이터를 가져와서 model 에 저장할 것임
FileMapper.xml 에 select 문 작성 ( resultMap 을 사용해서 컬럼명과 변수를 Mapping )
전달받은 데이터를 forEach 문으로 화면에 출력
다운로드와 이미지 출력 구현
download 경로를 컨트롤러에 작성 및 download 기능을 구현
파일 삭제 기능 추가
result.jsp 에 파일 별로 a 삭제할 경로와 파일 출력할 img 태그 추가
delete 경로로 들어왔을때 file 명과 id 값을 받아서 service 로 전달
service 에서는 mapper 로 id 값을 전달하여 db 에 저장된 파일정보를 삭제, 디렉토리 내의 파일은 service 에서 삭제