본문 바로가기

국비

02.02 국비학원 84일차 (파일 업로드)

>> 파일(이미지) 업로드 이어서 진행

 

 DB user 테이블에 pImg 라는 이미지 경로 저장할 컬럼 추가. 디폴트 이미지를 설정해둠

JSP 의 img태그 안의 src 속성값을 user.pImg 에서 가져옴
디폴트 이미지
'aa' 계정엔 dduru.jpg 이미지를 설정했을 때의 화면

----------여기까지 프리뷰로 이미지를 확인하고 경로를 저장함. 이 다음으론 서버의 디스크에도 저장되도록 하는 과정-------

web.xml에 모든 서블릿에서 사용할 수 있는 전역변수를 설정해줌

   → 파일 최대 크기 maxFileSize 를 (1024 * 1024 * 10) 값인 10485760 으로 지정

   → 파일 타입을 image 로 제한

   → 파일 확장자를 png, jpeg 로 제한

 

[JSP & Servlet] 서블릿 파라미터(init-Param, context-param) (tistory.com)

 

[JSP & Servlet] 서블릿 파라미터(init-Param, context-param)

세번째로 서블릿 파라미터와 스코프에 대해서 이야기 해보려 한다. 크게 파라미터는 2개로 나뉠 수 있다. 1) init- param 해당 파라미터 값은 지정해준 서블릿 내에서만 쓸 수 있는 값이다. 변수로

erjuer.tistory.com

 

설정한 전역변수는 servlet에서 getInitParameter() 로 가져올 수 있다.

if문 설명 : 이미지파일 크기가 최대 파일 크기보다 작고 (아니면 'fileSizeError' 값을 가지는 에러화면으로 이동) ,

                 파일 종류가 전역변수로 설정한 종류와 같아야 하고 (아니면 'fileTypeError' 값 가지는 에러화면으로 이동) ,

                 파일 확장자가 전역변수로 설정한 확장자들에 속하면 (아니면 'fileExtError' 값 가지는 에러화면으로 이동) ,

                 서버의 디스크에 업로드된 파일을 저장시키고 로그아웃 되어 메인페이지로 돌아가게 한다.

 

req.getServletContext().getRealPath("/static/img/profile") → /static/img/profile 이 실제 서버에 배포된 경로를 찾는다.

imagFile.write(path + "/" + imageFile.getSubmittedFileName()) → 실제 배포 경로에 업로드된 파일 이름으로 파일을 저장

프로젝트에 저장한 이미지

((위처럼 프로젝트 폴더에 이미지를 등록해놓지 않은 이상, write로 서버 배포 경로에 저장한 파일은 서버가 clean 되면 사라진다.))

user.setpImg("/static/img/profile/" + imageFile.getSubmittedFileName()) → DB에 사용자 정보의 pImg 값(경로) 를 저장

                                                                       (set으로 값 설정하고 service에 저장 데이터 담긴 객체 전달하여 dao 로 접근)

service의 uploadImage 메서드
dao의 updateImage 메서드
mapper

+++이미지 업로드 에러 JSP

initParam으로 web.xml의 전역변수 가져올 수 있다