2014-03-30 2 views
3

yeasterday에서 내 Spring 애플리케이션에 ajax 파일을 업로드하려고합니다. HTML 코드에서ajax로 봄 파일 업로드

@RequestMapping(value="/upload", method=RequestMethod.POST) 
@ResponseBody 
public String uploadFile( 
     @RequestParam("file") MultipartFile file, Principal principal) 
{ 
    if(principal != null) { 

    } 

    return ""; 
} 

형태 :

<form id="uploadImageForm" 
      name="uploadImageForm" 
      enctype="multipart/form-data"> 
     <div class='dialog' style='width:200px;'> 
      <div class='green_button' id='files' name='files'> 
       <div class='green_button_text' id="add_image"> 
        wybierz zdjęcie 
       </div> 
       <input type="file" name="file" id="fileInputHidden" style="display:none"/> 
      </div> 
<script> 
    $("#add_image").click(function(){ 
     $("input[id='fileInputHidden']").click(); 
    }); 
</script> 
     </div> 
    </form> 

스크립트가 아약스로 파일을 전송하기 : dispacher-servlet.xml 파일에

document.getElementById('fileInputHidden').addEventListener('change', this.onFileChange, false); 
}, 

this.onFileChange = function(evt) { 
    var file = evt.target.files[0]; 
    if(!file != null) { 
     if (!!file.type.match(/image.*/)) { 
      $(document.forms['uploadImageForm']).ajaxUpload({ 
       url: CONTEXT_URL + "/upload", 
       method: "POST", 
       success: function(response) { 
        $("#accept").css("opacity","1"); 
        $("#accept").click(function(){ 
         $("#ac").css("display","none"); 
        }); 
       } 
      }); 

     } else { 
      alert("Wybrany plik nie jest zdjęciem!"); 
     } 
    } 

CommonsMultipartResolver 빈을 추가 이것은 내 컨트롤러입니다. 내 자신의 클래스는 게터 함께 내가

String uploadFileHandler(@ModelAttribute("uploadImageForm") UploadedFile file) {/*...*/} 

업로드 파일에 @RequestParam 주석을 변경하는 tryied

SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/jadenazlot] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?] with root cause 
java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured? 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:161) 
    at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:86) 
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79) 

: JQuery와 아약스 POST 요청을 보낼 때 내부 오류 (500)를 얻을처럼 내 스택 보인다 그리고 setter하지만, 그럼 NullPointerExcepotions을 얻을거야 file.getFile()

내가 뭘 잘못하고있어?

+0

multipartresolver 정의를 표시 할 수 있습니까? –

+1

MultipartResolver에서 해결책을 찾았습니다. maxUploadSize를 설정하지 않았습니다 ... – kris14an

답변

11

MultipartResolver는 maxUploadSize를 설정해야합니다.

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="maxUploadSize" value="50000000"/> 
</bean> 
+0

놀라운,이 게시물에 대한 감사합니다. 내 몇 시간을 구 했잖아. –