Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발자 되기

파일 업로드 방식 본문

Spring

파일 업로드 방식

KimMINHun 2021. 3. 27. 15:32

첨부파일을 서버에 전송하는 방식

 

<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