2017년 1월 18일 수요일

Java Config에서 파일 업로드 설정.



Servlet3.0 ? Spring 4.3 ? 

무슨 이유인지 모르겠지만 파일 업로드 설정 부분이 바뀐것 같다.
난생 처음 셋팅을 하면서 첨 난관이 많은거 같다.

WebMvcConfigurationSupport 를 상속 받은 ServletContext 영역에 아래의 코드를 넣어 multipart 설정을 한다.



private static final String LOCATION = "C:/mytemp/"; // Temporary location where files will be stored

private static final long MAX_FILE_SIZE = 5242880; // 5MB : Max file size.
private static final long MAX_REQUEST_SIZE = 20971520; // 20MB : Total request size containing Multi part.
private static final int FILE_SIZE_THRESHOLD = 0; // Size threshold after which files will be written to disk
    
    @Bean
    public MultipartConfigElement multipartConfigElement() {
MultipartConfigElement multipartConfigElement = new MultipartConfigElement( LOCATION, MAX_FILE_SIZE, MAX_REQUEST_SIZE, FILE_SIZE_THRESHOLD);
return multipartConfigElement;
   
//     final MultipartConfigFactory factory = new MultipartConfigFactory();
    }
    
@Bean
public StandardServletMultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}

톰캣 의 server.xml 에서.

<Context 태그로 시작되는 부분에 allowCasualMultipartParsing = "true"  속성을 추가 한다.

이렇게 해놓고 파일 업로드를 해보면 2097152 파일 사이즈 초과 해서 어쩌고 에러 날때 있다.

그때 프로젝트의 web.xml 에 

<multipart-config>
<!-- 52MB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>

</multipart-config>     

이거 추가 해준다.

왜 이렇게 복잡하게 설정해야 하는지 모르겟지마는... java 로 설정 바꿀때 web.xml 도 java로 바꿀껄 신경 쓰이는 부분이 많다.

cvc-complex-type.2.4.a: Invalid content was found starting with element 'multipart-config'. One of '{"http://java.sun.com/xml/ns/javaee":init-param, "http://java.sun.com/xml/ns/javaee":load-on-startup, "http://java.sun.com/xml/

 ns/javaee":run-as, "http://java.sun.com/xml/ns/javaee":security-role-ref}' is expected.

web.xml 에 설정 하고 나서 저런 에러 아닌 에러가 발생 하는데 xsd 포멧에 맞지 않아 그렇다고들 한다.

그냥 실행은 잘 된다. 

그러므로 일단 무시하는 걸로. ~!

댓글 없음:

댓글 쓰기