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

向Java Spring上传含文本与文件的表单失败,报Multipart请求异常

解决Spring后端接收FormData时的"Current request is not a multipart request"异常

这个问题我之前帮很多开发者排查过,核心问题出在GET请求不支持multipart/form-data类型的请求体,再结合你的代码细节,我帮你拆解错误并给出修正方案:

错误原因拆解

  • 请求方法选择错误:GET请求的参数是通过URL传递的,不会携带请求体(request body),而multipart/form-data格式的数据(包含文件)必须通过请求体传递,所以无论前端怎么设置enctype,GET请求都无法把FormData传给后端。你HTML表单的method="get"和AJAX的type:'get'都是错误的。
  • 后端请求方法不匹配:你的Spring接口用了RequestMethod.GET,和前端实际需要的POST请求不匹配,导致后端无法识别multipart请求。

修正后的代码

1. HTML代码(修改form的method为post)

<form id="creationForm" method="post" enctype="multipart/form-data"> 
  <input id="testName" class="form-control" name="testName"> 
  <input type="file" name="fileUpload" id="fileUpload"/> 
</form>

2. JavaScript代码(修改请求类型为post,简化FormData处理)

$(document).ready(function () {
  $('#btnSubmit').click(function (e) {
    e.preventDefault();
    var formData = new FormData(document.getElementById('creationForm'));
    // 无需单独存储文件,FormData会自动获取表单内的文件和输入值
    $.ajax({
      type: 'post', // 改为POST请求
      url: '/upload/testCase',
      data: formData,
      enctype: 'multipart/form-data',
      processData: false,
      contentType: false,
      success: function (result) {
        console.log("上传成功");
      },
      error: function (xhr) {
        console.log("上传失败:" + xhr.responseText);
      }
    });
  });
});

3. Java代码(修改请求方法为POST,可同时接收文本参数)

@RequestMapping(value = "/upload/testCase", method = RequestMethod.POST)
public @ResponseBody void uploadTestCase(
    @RequestParam("testName") String testName,
    @RequestParam("fileUpload") MultipartFile file 
) {
    System.out.println("接收的测试名称:" + testName);
    System.out.println("接收的文件:" + file.getOriginalFilename());
    // TestCases.upload(file);
}

4. Spring XML配置(你的配置本身没问题,确保依赖正确即可)

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

额外注意事项

  • 确保项目引入commons-fileupload依赖(Maven项目可在pom.xml中添加):
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version> <!-- 使用最新稳定版 -->
</dependency>
  • CommonsMultipartResolver的Bean id必须为multipartResolver,Spring会自动识别该id的Bean来处理multipart请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:20:06