스프링웹프로젝트 CHAPTER 21. 파일 업로드 방식
PART6 파일 업로드 처리
CHAPTER 21. 파일 업로드 방식
1) <form> 태그를 이용하는 방식
- 브라우저의 제한이 없어야 하는 경우에 사용
- 일반적으로 페이지 이동과 동시에 첨부파일을 업로드 하는 방식
- <iframe>을 이용해서 화면 이동 없이 첨부파일을 처리하는 방식
2) Ajax를 이용하는 방식
- 첨부파일을 별도로 처리하는 방식
- <input type='file'>을 이용하고 Ajax로 처리하는 방식
브라우저 상 첨부파일 처리 방식은 다양
서버 쪽에서의 처리는 대부분 비슷 : HTML코드 or JSON으로 처리
서버에서 주의해야 할 점 : 어떤 종류의 라이브러리와 API 등을 활용할 것인지
- cos.jar : 2002년에 개발 종료됨. 사용 권장X
- commons-fileupload : 가장 일반적으로 많이 활용됨
- 서블릿 3.0 이상 : 자체적으로 파일 업로드 처리가 API 상에서 지원
<ex05_impl> 프로젝트 확인
* MultipartFile 메서드
String getName() | 파라미터 이름 <input> 태그의 이름 |
String getOriginalFileName() | 업로드되는 파일의 이름 |
boolean isEmpty() | 파일이 존재하지 않는 경우 true |
long getSize() | 업로드되는 파일의 크기 |
byte[] getBytes() | byte[]로 파일 데이터 반환 |
InputStream getInputStream() | 파일데이터와 연결된 InputStream 반환 |
transferTo(File file) | 파일의 저장 |
* Ajax를 이용하는 첨부파일의 처리는 FormData라는 객체를 이용함
- <form>대신 ajax 이용하면 좋은점 : input type file이 여러개있을 때 처리하기 좋음
*파일 업로드에서 고려해야 하는 점들
- 동일한 이름으로 파일이 업로드 되었을 때 기존 파일이 사라지는 문제
- 이미지 파일의 경우에는 원본 파일의 용량이 큰 경우, 섬네일 이미지를 생성해야 하는 문제
- 이미지 파일과 일반 파일을 구분해서 다운로드 혹은 페이지에서 조회하도록 처리하는 문제
- 첨부파일 공격에 대비하기 위한 업로드 파일의 확장자 제한
* 두번째프로젝트는 ajax로 많이 해보기