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

JIRA插件后台文件上传异常:Servlet无法获取请求Part

解决JIRA插件Multipart Servlet无法获取上传部件的问题

Hey,我仔细看了你的代码和配置,一下子就抓住了核心问题——你依赖的Servlet API版本太低了,这直接导致@MultipartConfig注解完全没起作用!

1. 先修复Servlet API依赖

你pom.xml里用的是servlet-api 2.4,但@MultipartConfig是Servlet 3.0才引入的特性。JIRA 7.7.1本身是基于Servlet 3.0的,所以把依赖改成这个:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

注意artifactId换成了javax.servlet-api,这是Java EE规范统一后的正确坐标,老的servlet-api已经被弃用了。

2. 可选:优化@MultipartConfig配置

如果你的规则文件可能比较大,建议给注解加上参数,避免默认大小限制导致上传失败:

@MultipartConfig(
    fileSizeThreshold = 2 * 1024 * 1024, // 2MB(文件超过这个大小会写到磁盘)
    maxFileSize = 10 * 1024 * 1024,      // 单个文件最大10MB
    maxRequestSize = 50 * 1024 * 1024    // 整个请求最大50MB
)

3. 排查前端表单的小细节

虽然你的VM模板看起来没问题,但还是可以用浏览器开发者工具确认下:

  • 提交表单时,Network标签里的请求头Content-Type是不是multipart/form-data; boundary=xxx
  • 查看Form Data里有没有file部件、uploading和test参数,确认请求体不是空的

4. 调试小技巧

在doPost里加一行日志,看看请求体的长度:

LOG.debug("Request content length: " + request.getContentLength());

如果长度是0,那说明前端提交有问题;如果长度正常但getParts()还是空,那肯定是Servlet版本的问题没解决。

额外提醒:JIRA的请求链

JIRA有自己的请求处理过滤器,不过只要你用对了Servlet 3.0依赖和注解,就不会被拦截导致解析失败。我之前在JIRA插件里遇到过一模一样的问题,换了Servlet版本就搞定了!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:58