우당탕탕 개발자 되기
파일 업로드 방식 본문
첨부파일을 서버에 전송하는 방식
<form> 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우에 사용
- 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식
- <iframe>을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식
Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식
- <input type="file">을 이용하고 Ajax로 처리하는 방식
- HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식
서버에서 첨부파일을 처리하는 방식
- cos.jar : 2002년도 이후에 개발이 종료되었으므로, 더 이상 사용하는 것을 권장하지 않는다.
- commons-fileupload : 가장 일반적으로 많이 활용되고, 서블릿 스펙 3.0 이전에도 사용 가능
- 서블릿 3.0 이상 : 3.0 이상부터는 자체적인 파일 업로드 처리가 API 상에서 지원한다.
web.xml 에서 <multipart-config> 설정
-특정 사이즈의 메모리 사용(file-size-threshold), 업로드되는 파일을 저장할 공간(location), 업로드 되는 파일의 최대 크기(max-file-size)와 한번에 올릴 수있는 최대 크기(max-request-size) 를 지정한다.
MultipartFile 메서드
String getName() : 파라미터의 이름 <input> 태그의 이름
String getOriginalFileName() : 업로드되는 파일의 이름
boolean isEmpty() : 파일이 존재하지 않는 경우 true
long getSize() : 업로드되는 파일의 크기
byte[] getBytes() : byte[]로 파일 데이터 반환
InputStream getInputStream() : 파일 데이터와 연결된 InputStream 을 반환
transferTo(File file) : 파일의 저장
파일 업로드에서 고려해야 할 점들
- 동일한 이름으로 파일이 업로드 됬을 때 기존 파일이 사라지는 문제
- 이미지 파일의 경우에는 원본 파일의 용량이 큰 경우 섬네일 이미지를 생성해야 하는 문제
- 이미지 파일과 일반 파일을 구분해서 다운로드 혹은 페이지에서 조회하도록 처리하는 문제
- 첨부파일 공격에 대비하기 위한 업로드 파일 확장자 제한
브라우저로 전송하는 데이터에 꼭 포함되어야하는 정보
- 업로드된 파일의 이름과 원본 파일의 이름
- 파일이 저장된 경로
- 업로드된 파일이 이미지인지 아닌지에 대한 정보
이러한 모든 정보를 처리하는 방법은 1) 업로드된 경로가 포함된 파일 이름을 반환하는 방식, 2) 별도의 객체를 생성해서 처리하는 방법이 있다.
'Spring' 카테고리의 다른 글
| Multi-Thread (0) | 2021.09.08 |
|---|---|
| 웹 어플리케이션의 이해 (0) | 2021.09.08 |
| 트랜잭션(Transaction) 관리 (0) | 2021.03.24 |
| AOP (0) | 2021.03.23 |
| Spring MVC 프로젝트 구성 (0) | 2021.02.11 |