파일 업로드 방식
1. <form> 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우에 사용
 - 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식
 - <iframe>을 이용해서 화면의 이동 없이 첨부파일을 업로드 하는 방식

2. Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식
 - <input type='file'>을 이용하고 Ajax로 처리하는 방식
 - HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식

 

서버에서의 주의사항
 - 어떤 종류의 라이브러리나 API등을 활용할 것인지
  o cos.jar : 2002년도 이후에 개발이 종료되었으므로, 더 이상 사용하는 것을 권장하지 않음
  o commons-fileupload : 가장 일반적으로 많이 활용되고, 서블릿 스펙 3.0 이전에도 사용 가능
  o 서블릿 3.0 이상 : 3.0 이상부터는 자체적인 파일 업로드 처리가 API 상에서 지원

 

파일 업로드에서 고려해야 하는 점들
 - 동일한 이름으로 파일이 업로드 되었을 때 기존 파일이 사라지는 문제
 - 이미지 파일의 경우에는 원본 파일의 용량이 큰 경우 섬네일 이미지를 생성해야 하는 문제
 - 이미지 파일과 일반 파일을 구분해서 다운로드 혹은 페이지에서 조회하도록 처리하는 문제
 - 첨부파일 공격에 대비하기 위한 업로드 파일의 확장자 제한

 

첨부파일 삭제
 - 이미지 파일의 경우에는 섬네일까지 같이 삭제되어야 함
 - 파일을 삭제한 후에는 브라우저에서도 섬네일이나 파일 아이콘이 삭제되도록 처리해야 함
 - 비정상적으로 브라우저의 종료 시 업로드된 파일의 처리

 

게시물 조회

- 게시물을 조회 할 때 join처리해서 한꺼번에 게시물과 첨부파일의 정보를 같이 처리하는 방식

(데이터베이스를 한 번만 호출하게 되므로 효율적이지만 MyBatis 쪽에서 처리해야 하는 일이 많아짐)

- JSP에서 첨부파일의 정보를 Ajax를 이용해서 처리하는 방식

(다시 쿼리를 처리해야 하는 불편함이 있집만 난이도가 낮고, 화면에서 처리는 JavaScript 처리가 복잡)

 

ㅁ 전통적인 방식 : 테이블을 join해서 한번의 호출로 처리하는 방식(쿼리를 한번만 호출해 DB의 부하를 줄여줌)

 

 

게시물의 삭제

- 게시물의 내용과 게시물에 포함된 첨부파일을 같이 삭제 해야함

- 단순 DB상이 아닌 실제 저장된 파일의 삭제도 필요

 

 

+ Recent posts