MultipartHttpServletRequest 로 파일업로드 구현하려고 하는데 에러가 발생합니다.
- 작성자 :
- 최*찬
- 작성일 :
- 2015-09-30 17:09:09
- 조회수 :
- 21,287
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
등록 버튼을 누르면 컨트롤러로 가기전에 exception이 발생합니다.
DEBUG [egovframework.rte.psl.orm.ibatis.SqlMapClientTemplate] Obtained JDBC Connection [Transaction-aware proxy for target Connection from DataSource [org.apache.commons.dbcp.BasicDataSource@6644621c]] for iBATIS operation
java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@550c2878
가이드대로 컨트롤러에
@RequestMapping(value="/test.do")
public String testManageRegist(
final MultipartHttpServletRequest multiRequest,
@ModelAttribute("searchVO") ComDefaultVO searchVO,
@RequestParam Map<?, ?> commandMap,
@ModelAttribute("testManageVO") TestManageVO testManageVO,
@ModelAttribute("testTestManageVO") TestTestManageVO testTestManageVO,
BindingResult bindingResult,
ModelMap model)
이렇게 선언하였고 JSP 에 form에 method="post"
enctype="multipart/form-data" 지정하였습니다.
context-common.xml
context-properties.xml
web.xml (HTMLTagFilter 삭제)
검색은 며칠동안 충분히 많이 해보고 글 올립니다. 어딜 더 확인해 봐야할까요?
자바는 1.7 이클립스 3.5.0 beta 64bit 사용 중입니다.
DEBUG [egovframework.rte.psl.orm.ibatis.SqlMapClientTemplate] Obtained JDBC Connection [Transaction-aware proxy for target Connection from DataSource [org.apache.commons.dbcp.BasicDataSource@6644621c]] for iBATIS operation
java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@550c2878
가이드대로 컨트롤러에
@RequestMapping(value="/test.do")
public String testManageRegist(
final MultipartHttpServletRequest multiRequest,
@ModelAttribute("searchVO") ComDefaultVO searchVO,
@RequestParam Map<?, ?> commandMap,
@ModelAttribute("testManageVO") TestManageVO testManageVO,
@ModelAttribute("testTestManageVO") TestTestManageVO testTestManageVO,
BindingResult bindingResult,
ModelMap model)
이렇게 선언하였고 JSP 에 form에 method="post"
enctype="multipart/form-data" 지정하였습니다.
context-common.xml
context-properties.xml
web.xml (HTMLTagFilter 삭제)
검색은 며칠동안 충분히 많이 해보고 글 올립니다. 어딜 더 확인해 봐야할까요?
자바는 1.7 이클립스 3.5.0 beta 64bit 사용 중입니다.
A
안녕하세요. 표준프레임워크센터입니다.
일반적으로 체크 하는 부분은 3가지로
1. spring 설정에서 multipartResolver가 bean으로 주입이 되었는지,
ex)<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
2. form에서 enctype이 multipart/form-data 으로 되었는지,
ex)<form id="fileupload" method="post" enctype="multipart/form-data">
3. Controller에서 Request 를 MultipartHttpServletRequest 로 받고 있는지 확인합니다.
올려주신 내용만으로는 해당오류의 원인을 파악하기 힘드나, 보통 form 태그에 enctype="multipart/form-data" 지정되지 않은 경우이거나, form tag가 여러 개 있는지, post로 호출하는 부분들을 재 점검해보시기 바랍니다.
아니면 함수의 파라미터로 MultipartHttpServetRequest를 넣지 않고 HttpServletRequest 객체로 받아 함수 안에서 캐스팅을 하는 형태로
처리해 보시기 바랍니다.
해당 내용은 아래의 외부링크를 참조해 보시기 바랍니다.
http://springsource.tistory.com/9
http://raonit.tistory.com/41
감사합니다.
일반적으로 체크 하는 부분은 3가지로
1. spring 설정에서 multipartResolver가 bean으로 주입이 되었는지,
ex)<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
2. form에서 enctype이 multipart/form-data 으로 되었는지,
ex)<form id="fileupload" method="post" enctype="multipart/form-data">
3. Controller에서 Request 를 MultipartHttpServletRequest 로 받고 있는지 확인합니다.
올려주신 내용만으로는 해당오류의 원인을 파악하기 힘드나, 보통 form 태그에 enctype="multipart/form-data" 지정되지 않은 경우이거나, form tag가 여러 개 있는지, post로 호출하는 부분들을 재 점검해보시기 바랍니다.
아니면 함수의 파라미터로 MultipartHttpServetRequest를 넣지 않고 HttpServletRequest 객체로 받아 함수 안에서 캐스팅을 하는 형태로
처리해 보시기 바랍니다.
해당 내용은 아래의 외부링크를 참조해 보시기 바랍니다.
http://springsource.tistory.com/9
http://raonit.tistory.com/41
감사합니다.