Extamh 2024-03-11 00:47 采纳率: 0%
浏览 162

SpringBoot报错Current request is not a multipart request

SpringBoot报错Current request is not a multipart request怎么解决??

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.multipart.MultipartException: Current request is not a multipart request] with root cause

框架为:Vue3 + SpringBoot

Vue

前端发送上传文件的代码如下(Service对象的作用仅为在请求拦截会给请求加上token)

img


用火狐浏览器查看时发送的Content-Type字段为

img

请求的有效载荷为

img

Springboot

后端接收请求请求的代码:

img

但是当点击发送时,前端报错:Internal Server Error
后端报错: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.multipart.MultipartException: Current request is not a multipart request] with root cause

img

但是我用Apifox发送请求时,却没有后端却没有报这个错误

img

通过Apifox能够成功发送请求且后端正确接收到数据,所以后端应该是能正确接收数据的, 而用火狐浏览器看到的请求头中的请求头中的Content-Type字段和有效载荷似乎都是正确的,但是前端给后端发送请求时为什么会报Current request is not a multipart request这个错误呢
  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-03-11 08:33
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你提供的问题描述,出现"Current request is not a multipart request"错误的可能原因是后端接收到的请求不符合
    multipart/form-data 格式,而是普通的请求格式。这个错误通常在 Spring Boot
    中处理文件上传时出现,要解决这个问题,你可以按照以下步骤进行:

    1. 确认前端发送请求的 Content-Type 是否正确
    • 确保前端发送请求时设置了正确的 Content-Type 为 multipart/form-data。
    1. 检查前端发送文件的方式
    • 确保前端使用正确的方式发送文件。在 Vue 中,通常可以使用 FormData 对象来实现文件上传,确保 FormData 对象中包含文件数据。
    1. 检查前端发送请求的参数名
    • 确保前端发送的文件参数名与后端接收的参数名一致。在你提供的代码中,可以看到后端使用了 @RequestParam("file") 来接收文件,确保前端发送的文件参数名也是 "file"。
    1. 确认是否启用了 Multipart 解析器
    • 确保在 Spring Boot 的配置中启用了 multipart 解析器,以支持文件上传。你可以在 Spring Boot 的配置类中添加 @EnableWebMvc 或者直接在 application.properties/application.yml 文件中配置 multipart 解析器。
    1. 检查前端发送文件的方式是否正确
    • 确保前端以正确的方式发送文件。可以使用 JavaScript 的 FormData 对象来创建包含文件数据的表单,然后使用 XMLHttpRequest 或者 Fetch API 发送请求。
    1. 检查是否存在拦截器或过滤器影响请求
    • 如果项目中使用了拦截器或者过滤器,确保它们不会修改请求的内容或者格式,导致后端无法识别请求为 multipart 请求。
    1. 进一步调试和排查
    • 如果以上步骤都确认无误但问题依然存在,可以进一步在前后端代码中进行调试,查看请求和响应的具体内容,以及后端接收到的请求数据格式。
      根据以上解决思路,你可以逐步检查和排查问题所在,解决 "Current request is not a multipart request"
      错误。如果你需要更具体的代码示例或者配置示例,请提供相关代码和配置信息,我可以帮助你进一步解决问题。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 创建了问题 3月11日

悬赏问题

  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET