Programing/egovFramework

전자정부프레임워크 spring 파일 업로드시 500 에러 원인 해결법

리커니 2015. 10. 15.
반응형

 

전자정부프레임워크 spring 파일 업로드시 500 에러 원인 해결법

 

일단 전자정부 프레임워크의 업로드에 대한 설명은 접어두고

오류의 원인과 해결법에 대해서 설명하겠습니다.

 

<form action="readCSV.do" method="post" enctype="multipart/form-data" id="fileForm" >
     <input type="file" name="file" id="file" onChange="uploadChange(this.value)" style="display: none;" />
</form>

 

저의 경우 위와 같이 form도  enctype 과 method 를 정석대로 입력하였고

서버 쪽에서도 정석대로 아래와 같이 받아주었습니다.

 

1
2
3
4
5
6
7
8
9
@RequestMapping(value="/readCSV.do", method=RequestMethod.POST)
 public String readFile(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws IOException {
  
  final Map<String, MultipartFile> files = ((MultipartHttpServletRequest)request).getFileMap();
  System.out.println(files.size());
  System.out.println(files.toString());
  
  return "FiileList";
 }
cs

 

물론 spring 설정파일(context-common.xml) 에도 아래와 같이 정석대로 설정해 주었고

 

1
2
3
4
 <bean id="multipartResolver" class="egovframework.com.neighbor.web.common.EgovMultipartResolver">
        <property name="maxUploadSize" value="100000000" />
        <property name="maxInMemorySize" value="100000000" />
 </bean>
cs

 

EgovMultipartResolver.java 의 경로 위치 뭐 이상이 아무 것도 없었습니다.

그런데 자꾸 실행하면 500에러를 띄우는 것입니다.

 

 

 

java.lang.NullPointerException 자꾸 나는데 원인이 뭔지도 모르겠고..

엄청 오래 고민했던거 같내요..

 

원인은 간단했습니다.

EgovMultipartResolver.java 의

String propExts = propertyService.getString("Globals.validateExts"); <- 이부분에서 에러가 난거였는데

 

spring 설정파일중 context-properties.xml 파일에 아래의 한줄을 추가해 주면 됩니다.

<entry key="Globals.validateExts" value="jsp,cgi,php,asp,aspx,exe,com,html,htm,cab,php3,pl,java,class,js,css"/>

 

 

[context-properties.xml]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
 
 <bean name="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
  <property name="properties">
       <map>
        <entry key="pageUnit" value="10"/>
        <entry key="pageSize" value="10"/>
        <entry key="SUCCESS" value="200"/>
        <entry key="FAIL" value="201"/>
         <entrykey="Globals.validateExts"value="jsp,cgi,php,asp,aspx,exe,com,html,htm,cab,php3,pl,java,class,js,css"/>
      </map>
  </property>
 </bean>
</beans>
cs
반응형

댓글

💲 추천 글