spring mvc - multipartfile - org.springframework.web.multipart.MultipartException: la solicitud actual no es una solicitud de varias partes
upload file spring mvc (3)
Compruebe si ha agregado CommonsMultipartResolver en Spring-Servlet.xml .
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
Luego, agregue el enctype a multipart / form-data en su formulario
<form id="fileupload" method="post" enctype="multipart/form-data">
Finalmente en Controller, Request> MultipartHttpServletRequest
@RequestMapping(value = "/profileimageupload", method = RequestMethod.POST)
public ModelAndView uploadProfileImage(MultipartHttpServletRequest request) {}
Dependencias
- commons-fileupload.jar
- commons-io.jar
Estoy tratando de enviar una solicitud de varias partes al servidor, pero recibo la siguiente excepción HTTP Status 500: Falló el procesamiento de la solicitud; la excepción anidada es org.springframework.web.multipart.MultipartException: la solicitud actual no es una solicitud multiparte
<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>
mi llamada ajax que está enviando la solicitud.
$(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(){
}
});
});
});
mi controlador que debe manejar la solicitud
@RequestMapping(value="/profileimageupload",method= RequestMethod.POST)
public void uploadProfileImage(@RequestParam(value="imageFile") final MultipartFile file) throws NumberFormatException, IOException{
////
}
Tenía la siguiente configuración web para el archivo de varias partes
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
/**
* Supports FileUploads.
*/
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(500000000);
return multipartResolver;
}
}
Intenta nuevamente con " encabezados ":
@RequestMapping(value = "/profileimageupload", headers = "content-type=multipart/*", method = RequestMethod.POST)
y ajax call follow: ¿Cómo puedo subir archivos de forma asíncrona?
¡Espero que esto te sea útil!
Parece que su forma de etiqueta no está bien formateada y todo lo que está después del
''action="<c:url value="/members/profileimageupload" />"''
está siendo ignorado Intenta escribir así y mira si funciona:
action="<c:url value=''/members/profileimageupload'' />"