You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Jersey实现formdata文件上传返回500错误问题咨询

问题根因

这个错误是Jersey多部件请求处理和Jackson序列化组件配合时的常见问题:你虽然构造了空的Response.ok()响应,但因为接口没有明确指定@Produces注解声明响应的媒体类型,Jersey在匹配响应的MessageBodyWriter时,JacksonProvider会误将请求上下文里已被消费的FormDataParam对应的MIMEPart对象当作响应实体尝试序列化,此时MIMEPart的流已经被消费销毁,就会抛出No such MIME Part异常。

解决方案

你可以任选以下一种方式修复:

  • 明确指定响应类型:在接收端的接口方法上添加@Produces注解,比如返回空JSON的话加@Produces(MediaType.APPLICATION_JSON),如果是纯文本就加@Produces(MediaType.TEXT_PLAIN),明确告诉Jersey用对应的序列化器处理响应,不会再误读取请求的多部件参数。
  • 用204状态码返回空响应:既然你没有要返回的响应体,可以把return Response.ok().build();改成return Response.noContent().build();,204状态码明确代表无响应内容,Jersey会直接跳过序列化步骤。
  • 补充Jackson序列化排除规则:可以在JacksonProvider的配置中添加规则,排除org.jvnet.mimepull.MIMEPart、org.glassfish.jersey.media.multipart.FormDataMultiPart等多部件相关类型的序列化,避免误操作。

可选优化建议

  • 接收端处理完uploadedInputStream后手动调用close()方法关闭流,避免临时资源残留。
  • 校验发送端的size参数格式:你发送的size是字符串类型,接收端声明为long类型,确认下Jackson的类型转换规则是否适配,避免额外的参数转换错误。

内容的提问来源于stack exchange,提问作者user2617187

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:06:03