错误:
org.springframework.web.multipart.MultipartException: The current request is not a multipart request
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.assertIsMultipartRequest(RequestParamMethodArgumentResolver.java:185)
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:150)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:86)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)
Controller:
@RequestMapping("/uploadImg")
@ResponseBody
public String filesUpload(@RequestParam(value = "imgFiles",required = false) MultipartFile[] files,String faultReason,Long faultId,String type,Integer stationId,Integer userId);
原因:
Spring在处理请求映射的时候,如果发现某个请求参数是MultipartFile类型的,会判断请求是否是MultipartHttpServletRequest。
修改后:
@RequestMapping("/uploadImg")
@ResponseBody
public String filesUpload(/*@RequestParam(value = "imgFiles",required = false) MultipartFile[] files,*/String faultReason,Long faultId,String type,Integer stationId,Integer userId,
HttpServletRequest request){
//...
MultipartFile[] files=null;
if(request instanceof MultipartHttpServletRequest){//注意这里
List<MultipartFile> fls=((MultipartHttpServletRequest)request).getFiles("imgFiles");
if(fls!=null && fls.size()>0){
files=new MultipartFile[fls.size()];
fls.toArray(files);
}
}
//...
}