2014-03-30 5 views
3

С самого начала я пытаюсь загрузить файл ajax в мое приложение Spring. Это мой контроллер:Загрузка файла Spring по ajax

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

    } 

    return ""; 
} 

форма в HTML-код:

<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> 

Скрипт для отправки файла с помощью AJAX:

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!"); 
     } 
    } 

в dispacher-servlet.xml добавил CommonsMultipartResolver боб. когда JQuery отправить запрос после Ajax, получить Внутренняя ошибка (500), и мой стек выглядит следующим образом:

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) 

Я tryied изменить @RequestParam аннотацию

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

Загруженный файл мой собственный класс с геттер и 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

Удивительно, спасибо большое за этот пост. Вы спасли мне несколько часов. –

Смежные вопросы