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

Spring Boot文件上传报错:Required request part 'file' is not present

我之前也碰到过一模一样的问题!这个400错误提示找不到'file'请求部分,明明表单里已经加了name="file",真的很头疼。结合你的代码和排查过程,给你几个可以尝试的方向:

1. 先确认浏览器实际发送的请求是否正确

有时候看起来表单代码没问题,但浏览器可能没正确提交文件。打开Chrome/Firefox的开发者工具(F12),切换到Network标签,点击上传按钮后,找到对应的POST请求:

  • 查看Request Headers里的Content-Type,应该是multipart/form-data; boundary=xxxxxx(不是application/x-www-form-urlencoded)
  • 查看Form Data部分,有没有file字段,并且显示了文件名(如果没选文件就提交也会出现这个错误,所以要确保选了文件再提交)

2. 检查Spring Boot的Multipart配置是否启用

Spring Boot默认是启用Multipart的,但有时候可能因为自定义配置或者版本问题被禁用了。在application.properties(或application.yml)里添加以下配置确保启用:

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB  # 根据你的需求调整大小
spring.servlet.multipart.max-request-size=10MB

3. 尝试用@RequestPart替代@RequestParam

虽然@RequestParam通常能处理文件上传,但有时候@RequestPart更适合multipart/form-data类型的请求。把你的Controller方法参数改成:

public String upload(@RequestPart("file") MultipartFile file, Model model, HttpSession session) throws IOException {
    // 原逻辑不变
}

4. 确认MultipartFile的导入包正确

确保你导入的是Spring的MultipartFile:

import org.springframework.web.multipart.MultipartFile;

不要导入其他框架(比如javax.servlet)的MultipartFile类,否则会导致无法识别。

5. 排除浏览器缓存或嵌套表单问题

  • 强制刷新页面(Ctrl+F5),避免浏览器缓存旧的表单代码
  • 检查你的HTML结构,确保表单没有嵌套在另一个表单里面(嵌套表单是无效的,会导致提交异常)

如果以上方法都试过还是不行,可以试试创建一个最小化的测试项目:只保留最简单的上传表单和Controller,看是否能正常工作,逐步排查是不是其他代码(比如拦截器、过滤器)影响了请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:14:38