Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

File Upload/Download - 파일 업로드/다운로드 본문

Java/Spring

File Upload/Download - 파일 업로드/다운로드

snd-snd 2019. 10. 29. 14:14

# Apache Commons FileUpload

 

- 파일 업로드를 위한 라이브러리 추가 (Maven)

- CommonsMultipartResolver 객체 생성 (servlet-context.xml)

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>
<!-- Commons-Fileuplad 담당 클래스 객체 생성 -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<beans:property name="maxUploadSize" value="2485760"/>
</beans:bean>

// CommonsMultipartResolver 객체 생성시 주의사항으로 반드시 id = "multipartResolver" 이어야 함.

 

 

Property Description
maxUploadSize 최대 업로드 가능한 바이트 크기, -1은 제한이 없음을 의미함 (기본값 : -1)
maxInMemorySize 디스크에 임시 파일을 생성하기 전에 보관할 수 있는 최대 바이트 크기
defaultEncoding 요청을 파싱할 때 사용할 캐릭터 인코딩 (기본값 : ISO-8859-1)

※ CommonsMultipartResolver 클래스의 프로퍼티

 

 

파일 첨부시 반드시 폼 태그의 속성 중 enctype = "multipart/form-data" 이어야 한다.

 

첨부된 파일은 컨트롤러에서 MultipartFile 인터페이스의 객체를 이용하여 받게된다.

또한 input 태그의 multiple 속성을 이용하게 되면 여러 개의 파일을 동시에 첨부할 수 있다.

여러 개의 파일을 동시에 첨부할 경우 MultipartFile 객체를 배열로 받아 처리하게 된다.

 

 

Return Type Method Description
String getName() 폼 태그의 파일타입 파라미터 이름을 반환
String getOriginalFilename() 업로드한 파일의 이름을 반환
boolean isEmpty() 업로드한 파일이 존재하지 않는지 여부
long getSize() 업로드한 파일의 크기를 반환
byte[] getBytes() throws IOException 업로드한 파일을 바이트 배열로 반환
InputStream getInputStream() thorws IOException 업로드한 파일 데이터를 읽어오는 InputStream을 반환
void transferTo(File dest) throws IOException 업로드한 파일 데이터를 지정한 파일에 저장

※ MultipartFile 인터페이스의 주요 메서드

 

 

파일 다운로드시 파일이 한글 파일이라면 브라우저 별로 각기 다른 한글 인코딩 처리가 필요하다.

때문에 브라우저의 User-Agent 값을 이용하여 브라우저 별로 구분하여 인코딩 처리를 한다.

또한 크롬과 엣지의 경우 아래와 같이 인코딩 처리를 하면 문제없이 다운로드가 가능하지만,

익스플로러11의 경우 아래와 같이 인코딩 처리를 하더라도 문제가 발생한다. HTTP 요청 시부터

추가적으로 인코딩 처리를 해야하는데 이는 다음 글에서 다시 리포팅할 기회가 있을 듯....

 

 

 

 

 

'Java > Spring' 카테고리의 다른 글

REST (Representational State Transfer)  (0) 2019.10.22
Interceptor - 인터셉터  (0) 2019.10.16
Spring MVC (Model View Controller) - 스프링 MVC 패턴  (2) 2019.10.10
Logback SLF4J - 로그 남기기  (0) 2019.10.08
Transaction - 트랜잭션  (0) 2019.10.08
Comments