static file 처리와 FileUpload

1. Static Resource 처리

Static Web Resource 처리하기

  • 서버의 처리가 필요 없는 static web resources는 요청 시 서버를 거치지 않고 처리 필요
  • 특정 URL로 요청이 오면 static resource로 인식하고 바로 응답 수행

  • mapping: HTTP 요청 URL
  • location: 실제 응답할 파일이 있는 위치

2. 파일 업로드

<form method="post" enctype="multipart/form-data">
    
</form>
  • 멀티파트 지원 기능을 사용하기 위해서는 MultipartResolver를 스프링 설정으로 등록해야 한다
  • MultipartResolver는 encType이 multipart/form-data 형식으로 전송되었을 경우 해당 데이터를 Spring MVC에서 사용할 수 있도록 변환한다
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="104857600"/>
    <property name="defaultEncoding" value="UTF-8"/>
</bean>
  • maxUploadSize - 최대 업로드 가능한 바이트 크기, -1은 제한이 없음을 의미한다, 기본값을 -1이다
  • maxInMemorySize - 디스크에 임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트 크기, 기본값은 10240이다
  • defaltEncoding - 요청을 파싱할 때 사용할 캐릭터 인코딩, 지정하지 않을 경우 HttpServletRequest.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 사용된다

MultipartFile의 주요 메서드

  • String getName() - 파라미터 이름을 구한다
  • String getOriginalFileName() - 업로드한 파일의 이름을 구한다
  • Boolean isEmpty() - 업로드한 파일이 존재하지 않는 경우 true를 리턴한다
  • Long getSize() - 업로드한 파일의 크기를 구한다
  • Byte[] getBytes() - 업로드한 파일 데이터를 구한다
  • InputStream getInputStream() - 업로드한 파일 데이터를 읽어오는 InputStream을 구한다, 사용이 끝나면 InputStream을 종료해주어야 한다
  • void transferTo(File dest) - 업로드한 파일 데이터를 지정한 파일에 저장한다

파일 이름 난수화

  • String fileRandomName = UUID.randomUUID().toString();
  • 현재 시간을 기준으로 하기 때문에 중복이 될 수 없는 난수를 생성한다