전자정부표준프레임워크에서 파일 업로드 크기는 "context-properties.xml" 파일에 정의 되어 있습니다. 템플릿 사이트 설정에는 기본값으로 5MB가 설정되어 있는것을 알 수 있습니다.
<!-- 프로퍼티 정보 설정 -->
<bean name="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
<property name="properties">
<map>
<entry key="pageUnit" value="10"/>
<entry key="pageSize" value="10"/>
<entry key="posblAtchFileSize" value="5242880"/>
<entry key="Globals.fileStorePath" value="/user/file/sht/"/>
<entry key="Globals.addedOptions" value="false"/>
</map>
</property>
</bean>
필요에 따라 업로드 크기를 100MB 초과 해서 설정하면 MaxUploadsizeExceededException 예외가 발생합니다.
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size of 100000000 bytes exceeded;
업로드 파일 사이즈를 변경해야 할곳이 더 있습니다.
전자정부표준프레임워크는 스프링프레임워크를 기반으로 하고 있습니다. 파일 업로드를 처리하는 빈은 "multipartResolver"이고, 클래스는 org.springframework.web.multipart.commons.CommonsMultipartResolver 입니다. 이 빈에 대한 설정은 "context-common.xml" 파일에 있습니다. 이 설정에서 약 100MB 로 제한되어 있습니다. 필요한 만큼 설정을 합니다.
<!-- MULTIPART RESOLVERS -->
<!-- regular spring resolver -->
<bean id="spring.RegularCommonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000000" />
<property name="maxInMemorySize" value="100000000" />
</bean>
"CommonsMultipartResolver" 빈에서 설정할 수 있는 프로퍼티는 다음과 같습니다.
- maxUploadSize : 한 요청당 업로드가 허용되는 최대 용량을 바이트 단위로 설정합니다. -1 은 제한이 없다는 뜻으로 이 프로퍼티를 지정하지 않을때 기본값입니다.
- maxUploadSizePerFile : 한 파일당 업로드가 허용되는 최대 용량을 바이트 단위로 설정합니다. -1 은 제한이 없다는 뜻으로 이 프로퍼티를 지정하지 않을때 기본값입니다.
- maxInMemorysize : 디스크에 저장하지 않고 메모리에 유지하도록 허용하는 바이트 단위의 최대 용량을 설정합니다. 사이즈가 이보다 클 경우 이 사이즈 이상의 데이터는 파일에 저장됩니다. 기본값은 10240 바이트 입니다.
- defaultEncoding : 요청을 파싱할때 사용한 기본 인코딩을 지정합니다. 이 값을 개발 파트의 헤더와 폼 필드에 적용됩니다. 기본값은 서블릿 스펙에 따라 ISO-859-1 입니다. 만약 요청이 문자 인코딩을 지정하면 요청 인코딩이 이 설정을 재정의 합니다. 또한 ServletRequest.setCharacterEncoding 메서드를 호출하는 필터에서의 문자 인코딩을 일반적으로 재정의할 수 있습니다.
- uploadTempDir : 업로드된 파일이 저장되는 임시 디렉토리를 설정합니다. 기본값은 웹 응용 프로그램에 대한 서블릿 컨테이너의 임시 디렉토리입니다.
- preserveFilename : CommonsMultipartFile.getOriginalFilename()에서 경로 정보를 제거하지 않고 클라이언트가 보낸 대로 파일 이름을 보존할지 여부를 설정합니다. 기본값은 "false"이며, Opera에서와 같이 실제 파일 이름 앞에 붙을 수 있는 경로 정보를 제거합니다. 잠재적 경로 구분자를 포함하여 클라이언트 지정 파일 이름을 그대로 유지하려면 이 값을 "true"로 설정합니다.
마지막으로 전자정부표준프레임워크의 템플릿 데이터베이스를 사용중이라면 게시판의 업로드 파일 사이즈를 저장하는 필드의 크기를 조정할 필요가 있습니다.
- LETTNBBSMASTER : 게시판 마스터 테이블로 ATCH_POSBL_FILE_SIZE 필드의 크기를 필요한 만큼 증가 시킵니다.
- LETTNFILEDETAIL : 업로드된 파일 정보가 들어가는 테이블로 FILE_SIZE 필드의 크기를 필요한 만큼 증가 시킵니다.