如果方法的參數中帶了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"); }