Framework & Management/Spring

스프링웹프로젝트 CHAPTER 21. 파일 업로드 방식

구일일구 2023. 1. 5. 16:51
반응형

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로 많이 해보기

 

반응형