如果方法的参数中带了MultipartFile(不管@RequestParam是true还是false),那么spring mvc就会先判断该请求是不是multipart请求。如果请求参数中没有带multipartFile,则会报错"org.springframework.web.multipart.MultipartException: The current request is not a multipart request"。这种情况导致了文件是必传的参数,从网上找到了大神的回答,有解决方案如下:
方法的参数中不要MultipartFile,方法体中做好判断,代码如下
boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart){ MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class); MultipartFile file = multipartRequest.getFile("file");}