2013-03-14 5 views
1

이 코드를 사용하여 컨트롤러에 이미지 파일을 게시하지만 파일 본문 부분에 항상 null 값이 표시됩니다.MultipartFile은 매번 null을 반환합니다.

@RequestMapping(value = "/updateprofile", method = RequestMethod.POST) 
public @ResponseBody 
ResponseMsg updateProfile(
     @RequestHeader(value = "userid", required = false) String userid, 
     @RequestHeader(value = "name", required = false) String name, 
     @RequestHeader(value = "phone", required = false) int phone, 
     @RequestParam(value = "file", required = false) MultipartFile file) { 

    ResponseMsg responseMsg = CommonUtils.checkParam(userid, name, phone, 
      file); 
    if (responseMsg.getStatus().equalsIgnoreCase("True")) 
     responseMsg = userService.login(name, userid); 
    return responseMsg; 
} 

아무도 도와 드릴 수 있습니까?

+1

커맨드 빈을 파일 객체로 채우지 않는 이유는 무엇입니까? 어떤 Spring 프레임 워크를 사용하고 있습니까? 버전 3 이하는 여러 파일을 업로드하는 동안 [문제] (http://stackoverflow.com/q/13686757/1037210)가 있습니다. – Lion

답변

3

multipart을 사용하면 양식 필드가 request Stream에 포함됩니다. 그래서 그들이 form fields인지 아닌지 확인해야합니다.

이것은 서블릿에서 사용하는 것으로, Spring-MVC에서 작동하도록 적절하게 변경할 수 있습니다.

boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
     if (isMultipart) 
     { 
      try 
      { 
       List items = upload.parseRequest(request); 
       Iterator iterator = items.iterator(); 
       while (iterator.hasNext()) 
       { 
        FileItem item = (FileItem) iterator.next(); 

        if (item.isFormField()) //your code for getting form fields 
        { 
         String name = item.getFieldName(); 
         String value = item.getString(); 
         System.out.println(name+value); 
        } 

        if (!item.isFormField()) 
        { 
         //your code for getting multipart 
        } 
       } 
      } 
0

먼저 제발 더 많은 코드를 게시하십시오. 그러면 더 많은 것을 찾을 수 있습니다. 둘째로 문제는 귀하의 형태라고 생각합니다. Spring mvc 업로드 파일을 사용하는 경우 양식은 <form action="your url" method="post" enctype="multipart/form-data">enctype에주의를 기울여야하므로 Spring DispatchServlet에서 파일 업로드를 알릴 수 있습니다. 또한 설정 파일에 MutilPartFileResovler을 설정했는지 확인해야합니다.

0

아직도이 문제로 어려움을 겪고있는 사람들을 위해, 나를 위해 일한 것은 다음과 같습니다. 이전에 내 input 필드로 정의 하였다 ,

<input type="file" /> 

나는 위의 라인 널 (null) 파일을 얻고 있었다하지만 추가 할 때 name="file" 다 괜찮 았는데!

<input type="file" name="file" /> 

희망이 있습니다.

관련 문제