multipart로 data전송 시, Exception이 발생하였다.
StandardMultipartHttpServetRequest.handleParseFailure가 에러를 던져주었다.
no multi-part configuration이라고. 이거는 뭐지??? 했는데
context.xml이 필요하고, context.xml에 설정이 들어가야하더라.
(이거 Tomcat 8.x에서 해결법이라는데 9.0.65에서도 동일한 증상이 발생했고, 해결법도 같았다. 제가 잘못 알고 있는거면 댓글로 가르쳐주세요. 꼭....)
그 설정은 아래와 같다.
<Context allowCasualMultipartParsing="true" path="/">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
여기서 allowCasualMultipartParsing="true"만 넣어줘도 되긴 했음.
뱀발) 나의 경우 로컬에서는 잘 되었는데.. 이상하게 서버에서는 반영이 안되고 계속 오류를 내뱉었다. 왜??? 이유가 뭘까? 했는데.. -_-.. catalina.base가 다른경로였던것.. catalina.base아래에 conf폴더를 만들고, 해당 폴더 안에 context.xml을 위치시키니까 해결되었다. 만약 저 설정을 했는데도 계속 multipart config오류가 나면 내 톰캣의 실행 환경변수를 점검해보자... |
이제 파일 올리면? 잘된다!
파일 첨부 안하면? 잘된다!!
파일 2메가 이상을 올리면? exception난다!!!!
톰캣에서 default post size가 2,097,152이다. 이걸 넘어서는 multipart 데이터는 톰캣이 사이즈 넘었다고 오류 뱉어버린다.
이거는 conf/server.xml을 찾아보자. (톰캣이 먼저 막아버리는 경우니까.. 자바쪽에서 아무리 사이즈 리밋 풀어봐야 안된다. 외부에서 요청이 들어오는걸 가장 먼저 받는녀석이 누구인지 생각해보면..)
..
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="220000000" />
위 설정에서 maxPostSize = "원하는 값" 설정해주면 된다. 근데 maxPostSize이니까.. 딱 파일크기만 하면 곤란하다. 여유있게 잡아주자. 파일크기는 다른데서 검사하고.
반응형
댓글