본문 바로가기

개발노트/JAVA&JSP

[톰캣] 파일 업로드 용량 관련 (POST BODY SIZE) 문제 해결

톰캣 8.0.30 버전 + 자바 1.7 환경에서 스프링 프레임워크를 사용하여 웹 개발을 진행중.


Multipart가 아니라 Base64로 인코딩하여 파일 업로드 기능을 구현 중 이상한 점 발견

=> 어떤 파일은 잘 올라가는데, 업로드가 안 되며 JSP View에서 Java Controller 로 넘겨주는 HttpServletRequest 타입의 객체(request)가 null이 되는 현상.

=> 처음에는 파일 타입때문인가 했는데 좀 더 테스트를 해보니 파일의 용량문제였음


톰캣은 기본적으로 아무 설정이 되어있지 않다면(=Default 라면) POST 타입으로 데이터를 전송할 때 POST BODY의 사이즈가 2MB로 제한이 되어 있다는 점을 확인.


그래서 명시적으로 POST BODY SIZE를 지정하여 해결할 수 있음.



톰캣이 구동중이라면 종료시키고,


$TOMCAT_HOME$/conf/server.xml


파일을 텍스트 에디터로 아래와 같이 수정하면 됨.





HTTP 프로토콜을 사용하는 Connector 태그를 찾아서 maxPostSize="-1" 을 추가해주면 최대값(2GB)으로 세팅된다.

maxPostSize 의 값은 bytes(바이트) 단위로 특정 용량으로 지정할 수도 있다.


참고로 톰캣 7.0.63버전 이전에는 maxPostSize="0"으로 지정해줘야 최대값으로 세팅이 되었었는데, 7.0.63버전 이후로는 "-1"로 설정해줘야 최대값이 된다는 점이 있으니 사용하고있는 톰캣 버전에 유의하기.



반응형