본문 바로가기

개발노트/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"로 설정해줘야 최대값이 된다는 점이 있으니 사용하고있는 톰캣 버전에 유의하기.



  • 질문있습니다. 2018.01.23 17:28

    좋은 정보 잘 참고하였습니다!

    server.xml maxPostsize를 수정해서 잘되었는데요!

    저 maxPostsize의 값을 (-1, 0 .. 등 크기)를 JSP에서 받을 수 없을까요

    업로드할려고하는 데이터 크기랑 maxPostsize값을 비교하고 싶은데!.. 잘안되네요

    • Favicon of https://lhb0517.tistory.com Mr.star 2018.01.24 21:01 신고

      음.. 스프링 부트라면 가능한 방법이 있을 것 같기도 한데, 외부 톰캣을 사용하여 자바 웹 프로젝트를 올리는 방법을 사용하시는 거면 방법이 없을 것 같습니다.