Postman调用SpringBoot文件上传接口报Current request is not a multipart request错误
问题原因
你的接口通过@RequestParam注解接收MultipartFile类型参数,要求请求必须是multipart/form-data格式。你在Postman中选择了binary类型传参,binary只会上传单一二进制文件流,没有multipart请求所需的表单参数结构和boundary分隔符,Spring无法解析为multipart请求,因此抛出异常。
解决方案
方案1:不调整接口代码,修改Postman调用方式
- 请求方式选择POST,填入正确的接口地址
/api/v1/uploadFile - 切换到
Body标签页,选择form-data类型,不要选binary - 新增一条参数,key填写注解中定义的
file,点击key输入框右侧的下拉选项,将默认的Text切换为File,然后在value列选择要上传的本地文件 - 在
Headers标签页添加Authorization请求头,填入你的令牌值即可,不要手动设置Content-Type,Postman会自动生成带boundary分隔符的multipart/form-data请求头
方案2:需要保留binary传参方式,调整接口代码
直接从请求流中读取二进制内容,不需要MultipartFile接收:
@PostMapping("/uploadFile") public void uploadFile(HttpServletRequest request, @RequestHeader(value = "Authorization") String authHeader) throws IOException { try (InputStream fileStream = request.getInputStream()) { // 调用文件工具类直接处理输入流,文件名可根据业务逻辑自行定义 fileUtils.saveFile(fileStream, "自定义文件名"); } }
补充排查项
如果使用form-data调用依然报错,可检查项目配置是否开启了multipart支持(SpringBoot默认开启,若手动关闭需补充配置):
spring: servlet: multipart: enabled: true max-file-size: 10MB # 可根据业务需求调整单文件大小上限 max-request-size: 10MB # 可根据业务需求调整请求总大小上限
内容的提问来源于stack exchange,提问作者Nunyet Calçada
相关产品推荐
相关产品推荐

