2013-02-21 55 views
31

我試圖發送一個多部分請求到服務器,但我得到以下異常 HTTP狀態500 - 請求處理失敗;嵌套的例外是org.springframework.web.multipart.MultipartException:當前請求不是多請求org.springframework.web.multipart.MultipartException:當前請求不是多部分請求

<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-body"> 
     <form id="imageuploadForm" action="<c:url value="/members/profileimageupload" />" method="POST" enctype="multipart/form-data"> 
      <div style="width:40%; float:left"> 
       <div class="fileupload fileupload-new" data-provides="fileupload"> 
        <div class="fileupload-preview thumbnail" style="width: 200px; height: 150px;"></div> 
        <div> 
         <span class="btn btn-file"> 
          <span class="fileupload-new">Select image</span> 
          <span class="fileupload-exists">Change</span> 
          <input id="imageFile" name="imageFile" type="file" /> 
         </span> 
         <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Remove</a> 
        </div> 
       </div> 
      </div> 
      <div style="width:40%; float:right" > 
       <div class="progress"> 
        <div class="bar" style="width: 60%;"></div> 
       </div> 
      </div> 
     </form> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn btn-success" id="submit">Upload</button> 
     <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" >Close</button> 
    </div> 
</div> 

我Ajax調用它發送請求。

$(function() { 
    //twitter bootstrap script 
    $("button#submit").click(function(){ 
     var $form = $("#imageuploadForm"); 
     var type = $form.attr('method'); 
     var url = $form.attr('action'); 
     $.ajax({ 
      type: $form.attr('method'), 
      url: $form.attr('action'), 
      data: $form.serialize(), 

      success: function(msg){ 
       $("#form-content").modal('hide'); 
      }, 

      error: function(){ 
      } 
     }); 
    }); 
}); 

我的控制器應處理請求

@RequestMapping(value="/profileimageupload",method= RequestMethod.POST) 
    public void uploadProfileImage(@RequestParam(value="imageFile") final MultipartFile file) throws NumberFormatException, IOException{ 
    //// 
}    

我對多文件

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    /** 
    * Supports FileUploads. 
    */ 
    @Bean 
    public MultipartResolver multipartResolver() { 
     CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); 
     multipartResolver.setMaxUploadSize(500000000); 
     return multipartResolver; 
    } 
} 

回答

-1

看來你的標籤的形式不能很好地格式化,一切以下網絡配置中是在

'action="<c:url value="/members/profileimageupload" />"' 

被忽略。 嘗試寫這樣,看看它的工作原理:

action="<c:url value='/members/profileimageupload' />" 
+0

沒有......沒有幫助:( – 2013-02-21 19:30:06

11

與 「」 再試一次:

@RequestMapping(value = "/profileimageupload", headers = "content-type=multipart/*", method = RequestMethod.POST) 

和Ajax調用如下:How can I upload files asynchronously?

我希望這有助於您!

+1

我發現, 「POST」 部分是很重要的,它將無法使用GET請求。 – 2015-12-22 23:29:55

25

檢查您是否已經在爲spring-servlet.xml添加是CommonsMultipartResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> 

然後, 在表單中的加密類型添加到的multipart/form-data的

<form id="fileupload" method="post" enctype="multipart/form-data"> 

最後在控制器, 請求>MultipartHttpServletRequest

@RequestMapping(value = "/profileimageupload", method = RequestMethod.POST) 
public ModelAndView uploadProfileImage(MultipartHttpServletRequest request) {} 

依賴

  1. 公地fileupload.jar
  2. 公地io.jar
相關問題