본문 바로가기
오류처리

예외처리)HTTP 상태 500 - 멀티업로드/Muliupload

by 으노으뇨 2021. 10. 13.
728x90
반응형
SMALL

멀티 업로드를 진행할때 아래와같은 오류가 떳다.

 

더보기

HTTP 상태 500 내부 서버 오류

타입 예외 보고

메시지 Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.

설명 서버가, 해당 요청을 충족시키지 못하게 하는 예기치 않은 조건을 맞닥뜨렸습니다.

예외

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)

javax.servlet.http.HttpServlet.service(HttpServlet.java:681)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)

javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

근본 원인 (root cause)

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.

org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:122)

org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:113)

org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:86)

org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:93)

org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1128)

org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:960)

org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)

javax.servlet.http.HttpServlet.service(HttpServlet.java:681)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)

javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

근본 원인 (root cause)

 

java.lang.IllegalStateException: 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다.

org.apache.catalina.connector.Request.parseParts(Request.java:2855)

org.apache.catalina.connector.Request.getParts(Request.java:2823)

org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1098)

org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:93)

org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:86)

org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:93)

org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1128)

org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:960)

org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)

org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)

javax.servlet.http.HttpServlet.service(HttpServlet.java:681)

org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)

javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

비고 근본 원인(root cause)의 풀 스택 트레이스를, 서버 로그들에서 확인할 수 있습니다.

위의 그림과 같고 내용은 접힌글을 보면되겠다.

이는 단순하게 톰캣(서버), 즉 서버상에서 멀티업로드기능에 대해 알려주었어야 한다. 

처리방법은 간단했다.

서버즈->톰캣->context.xml

<context>태그란에 

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

를 추가해주어야한다.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
	license agreements. See the NOTICE file distributed with this work for additional 
	information regarding copyright ownership. The ASF licenses this file to 
	You under the Apache License, Version 2.0 (the "License"); you may not use 
	this file except in compliance with the License. You may obtain a copy of 
	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
	by applicable law or agreed to in writing, software distributed under the 
	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
	OF ANY KIND, either express or implied. See the License for the specific 
	language governing permissions and limitations under the License. --><!-- The contents of this file will be loaded for each web application -->
<Context allowCasualMultipartParsing="true" path="/">

	<!-- Default set of monitored resources. If one of these changes, the -->
	<!-- web application will be reloaded. -->
	<WatchedResource>WEB-INF/web.xml</WatchedResource>
	<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
	<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
	<!-- <Manager pathname="" /> -->
	<Resources cachingAllowed="true" cacheMaxSize="100000" />
</Context>

전체적인 내용은 이렇게 작성하니 해결되었다.

 

728x90
반응형
LIST

댓글