개발공작소
article thumbnail
728x90

오늘 폼데이터를 이용한 다중 파일 업로드를 공부하고 있는데.. 다음과 같은 에러가 떴다.

 

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; 에러

 

처음 이 에러를 봤을 때 구글링을 해보니 다음과 같은 글들이 대부분이었다.

context.xml에 다음과 같이 작성하라는 것.

 

<?xml version="1.0" encoding="UTF-8"?>
<Context allowCasualMultipartParsing="true" path="/">
    <Resources cachingAllowed="true" cacheMaxSize="100000" />
</Context>

그렇게 위와 같이 적용을 하였는데.. 문제는 다음이었다. 사이즈가 안맞는다는 것..

 

제한은 2097152바이트가 걸려있는데, 내가 올린 파일은 2521774바이트라서 걸린다는 것.. 그래서 이것 또한 구글링을 

해보니..

다음과 같은 해결방안이 있었다.

 

1. web.xml에서 <max-file-size>와 <max-request-size>의 사이즈를 늘리기

2. server.xml에서 maxPostSize 사이즈를 수정하기 

이렇게 maxPostSize="-1"로 수정했더랬라. 원래 아무것도 모르고 maxPostSize도 3000000000와 같이 수정을 하였는데,

이렇게 하면 안된다! 

Tomcat에서 기본적으로 POST로 넘길 수 있는 Parameter의 최대 Size가 2097152, 개수가 10000개 (Tomcat 7.0 기준)

이기에 3000000000과 같이 수정을 해도 인식을 못하기 때문이다..

나는 이걸 모르고 3000000000와 같이 수정을 한 뒤 다시 파일을 업로드 해보았다..

근데 똑같은 에러가 뜨는 것이었다.. 그래서 하.. 뭐냐 왜 적용이 안됬지? 뭐가 문제지.. 하면서 엄청 삽질을 했다.

여기저기를 무작정 300000000과 같이 늘리기를 시작... 그렇게 3시간을 삽질을 했다.. 그렇게 삽질을 한 결과..

아주 멍청한 실수를 한 것을 깨닳음..

 

나는 port를 8080으로 접근하기 때문에 port가 8080인 <Connector>에 maxPostSizs를 설정해줘야 하는데

port가 8089인 녀석한테 설정해놓고 왜 안돼지.. 했었던 것...

진짜 삽질 거하게 한번 했다.. port가 8080인 녀석에게 다음과 같이 설정하니 제대로 다중 파일 업로드가 된다..

 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"  URIEncoding="euc-kr" 
 maxPostSize="-1" maxParameterCount="-1" />

 

이렇게 오늘 하루도 삽질을 끝내었다.. maxPostSize를 300000000으로 설정을 해도 인식을 못하기 때문에

Default인 2097152가 적용이 된다. -1은 무한이라는 의미이기 때문에 2097152이상을 쓰고 싶다면 -1을 넣어주면 되겠다

다음부터는 이런 실수를 하지 않기를...

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!