# Spring - 파일업로드 연습1 (일반적인 방식)
# Spring - 파일업로드 연습2 (파일명 중복제거)
# Spring - 파일업로드 연습3 (업로드 결과를 iframe에 출력)
# AJAX(Asynchronous Javascript And XML)란?
이전 포스팅에서는 일반적인 방식으로 파일업로드를 구현했는데 이번에는 파일업로드를 ajax방식으로 구현해보자. 또한 날짜별로 저장 디렉토리를 자동 생성하여 업로드된 파일을 관리할 수 있도록 처리하고, 업로드된 파일이 이미지일 경우에는 썸네일을 생성해보자.
View(Ajax방식 - 업로드 페이지)
1. uploadAjax.jsp
파일업로드 영역에 텍스트 파일 또는 이미지파일을 드래그했을 때 내용이 바로 보여지는 기본효과를 막기 위해서 jQuery에
event.preventDefault();
코드를 작성한다.
ajax로 전달할 폼객체를 생성하고 file을 추가 시켜준다. file을 전달할 때는 ajax 옵션 속성을type:post
,processData: false
,contentType: false
로 설정한다.
2. 구현화면
업로드할 파일을 업로드 영역에 드래그한 뒤 업로드처리 완료되면 성공메시지 alert알림
크롬 개발자도구에서 업로드된 파일정보 확인
저장 디렉토리에서 원본이미지파일과 썸네일이미지이 생성되었는지 확인
Controller - 업로드 관련 컨트롤러
UploadController
파일 한글 처리를 위해서
@RequestMapping
어노테이션 속성에produces="text/plain;charset=utf-8"
을 추가한다.
업로드 관련 클래스
1. UploadFileUtils 클래스
파일을 한 디렉토리에 계속 저장해 파일이 많이지면 나중에 검색속도가 느려지고, 파일관리가 쉽지가 않다. 그렇기 때문에 파일을 업로드할 때마다 날짜별(연,월,일)로 디렉토리를 생성하도록 처리해주었다.
calcPath()
메서드에서 날짜별 디렉토리를 추출하고,makeDir()
메서드로 디렉토리를 생성한다.
업로드된 파일이 이미지 파일일 경우에는 뷰에서 미리보기 화면을 보여주기 위해 썸네일 이미지를 생성한다. 원본파일의 확장자명을 추출하고, 변수formatName
에 저장하여 MeidaUtils클래스에서 이미지 파일 여부를 확인하여 리턴한다. 리턴된 변수formatName
이 null이 아니면makeThumbnail()
메서드에서 썸네일을 생성하고, null일 경우makeIcon()
메서드에서 아이콘을 생성한다.
2. MediaUtils 클래스
UploadFileUtils클래스에서 추출한 파일의 확장자명을 대문자로 변환하고,
mediaMap
에 담긴 값을 호출한 뒤 리턴한다. 3가지(jpg,gif,png) 이미지 파일일 경우에는 값이 복사되어 리턴되지만, 아닐경우에는 null상태로 리턴된다.
댓글을 사용할 수 없습니다.