2013-02-21 19 views
31

Sto tentando di inviare una richiesta multipart al server ma sto ricevendo la seguente eccezione Stato HTTP 500 - Elaborazione richiesta non riuscita; l'eccezione annidata è org.springframework.web.multipart.MultipartException: La richiesta di corrente non è una richiesta più partiorg.springframework.web.multipart.MultipartException: la richiesta corrente non è una richiesta multipart.

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

mio ajax chiamata che sta inviando la richiesta.

$(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(){ 
      } 
     }); 
    }); 
}); 

mio controller che dovrebbe gestire la richiesta

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

ho avuto la seguente configurazione Web per il file multipart

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

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

risposta

-1

Sembra che il modulo tag non è ben formattato e tutto ciò che è dopo il

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

viene ignorato. Prova a scrivere come questo e vedere se funziona:

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

No ... Non ha aiutato :( –

11

prova di nuovo con "intestazioni":

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

e chiamata AJAX seguire: How can I upload files asynchronously?

Spero che questo utile tu!

+1

ho scoperto che la parte "POST" è importante, non funzionerà con le richieste GET. –

25

Controllare se si è aggiunto CommonsMultipartResolver in primavera-servlet.xml.

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

Poi, aggiungere l'enctype al multipart/form-data nel modulo

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

Infine nel controller, Richiesta>MultipartHttpServletRequest

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

Dipendenze

  1. commons-fileupload.jar
  2. commons-io.jar
Problemi correlati