새소식

반응형
250x250
📁 프로젝트 일지/👩‍🏫 공공 교육 서비스

10.기능 구현(7) - 수강 후기 게시판(파일 업로드/다운로드)

  • -
728x90
반응형

🦮 스스로를 위한 프로젝트 일지 가이드

1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가

2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가

3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가

 

 

수강 후기 게시판 CRUD 구현 시 파일 업로드 기술을 사용했다.

C드라이브의 임시 폴더를 경로로 설정해 파일이 저장되도록 하였고 저장되는 과정에서 파일명을 랜덤으로 변경해 저장했다.

 

 

1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가

 

파일명을 랜덤으로 생성하지 않으면 파일명이 중복되어 저장될 수 있기 때문이다.

 

2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가

 

파일 데이터를 처리하는 컨트롤러의 로직이 실행되어야 하는데 자꾸 안되는 오류가 발생했다.

어떤 부분에서 막히는지 디버깅해본 결과 VO에 아예 매핑이 안되는 것을 알아냈다.

원인은 multipartfile로 파일 데이터를 받았는데 VO에 적은 파일의 자료형은 multipartfile이 아니었기 때문...

자료형이 다르니까 당연히 매핑이 안됐던 거였다...

 

3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가

 

이 프로젝트에서는 파일 업로드 창을 두개 만들어서 구현하였는데, 드래그 앤 드롭으로 하는 파일 업로드라든지 하나의 업로드 창에서 다중 업로드가 가능하게끔 하면 사용자 입장에서 더 편리해질 것 같다.

 

 

수강 후기 게시판 CRUD 구현 시 파일 다운로드 기술을 사용했다.

파일 다운로드 시 랜덤으로 변경했던 파일명을 다시 원본 파일명으로 바꿔 다운될 수 있도록 했다.

 

 

1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가

 

사용자 입장에서는 파일을 원본 파일명으로 받는 게 너무나 당연한 거라서...

 

2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가

 

다운로드 메소드에서 변환된 파일명을 원본 파일명으로 바꾸는 작업을 하였으나 영문 파일명은 괜찮은데 한글 파일명의 경우 이상한 문자로 바뀌는 오류가 발생했다.

원인은 한글 파일명의 경우 UTF-8로 재인코딩하는 과정이 필요하기 때문이었다.

그래서 파일명 인코딩 메소드를 따로 구현해 해결했다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.