Spring Boot上传文件附加数据映射失败,请求排查原因
以下是针对你遇到的MissingServletRequestPartException异常的具体排查和解决方案:
检查请求参数名称的一致性
异常信息中明确提示Required request part 'uploadFileRequest ' is not present(注意参数名末尾带有空格),请确认Postman中添加的表单Part名称是uploadFileRequest(无空格),与Controller中@RequestPart注解的参数名完全匹配,避免出现空格、大小写错误等问题。为JSON参数设置正确的Content-Type
在Postman中,对应uploadFileRequest的表单项,必须将Content-Type设置为application/json,而非默认的text/plain。操作方式:点击该Part右侧的下拉菜单,选择application/json,再在内容框中输入合法的JSON内容(例如{"title":"测试标题","text":"测试内容"})。修正Controller的请求类型配置
你的Controller同时指定了APPLICATION_FORM_URLENCODED_VALUE和MULTIPART_FORM_DATA_VALUE,但普通表单编码(application/x-www-form-urlencoded)不支持文件上传,建议仅保留MULTIPART_FORM_DATA_VALUE以避免冲突:@PostMapping(value = "file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public void uploadRecipe(@RequestPart MultipartFile multipartFile, @RequestPart UploadFileRequest uploadFileRequest ) { ... }确认实体类的序列化有效性
确保UploadFileRequest类拥有完整的getter和setter方法,Spring Boot默认依赖Jackson进行JSON序列化,只要项目引入了spring-boot-starter-web依赖(已包含Jackson),就能自动完成属性映射;若缺少getter/setter,Spring无法通过反射读写属性,会导致映射失败。
内容的提问来源于stack exchange,提问作者Johnyb

