上传文件遇到the request was rejected because no multipart boundary was found

本文介绍了一个关于SpringBoot环境中使用MyBatis进行文件上传时遇到的问题及解决过程。问题表现为上传失败,IDE提示未找到多部分边界。通过调整控制器中参数接收方式,取消特定注解,最终成功实现文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

文件上传代码的测试,在springboot+Mybatis环境下

前台传来的数据有4个video对象的属性数据,和一个视频
接口文档:在这里插入图片描述

  • controller里:
    在这里插入图片描述
    接口文档给的是零散收参方式,我想改用对象收参,所以,postman的参数userId改为了user.id ,categoryId改为了category.id

  • postman里:

    • header栏加了 content-Type=multipart/form-data
    • body栏:在这里插入图片描述

问题描述

发送请求后,文件上传失败,idea出现报错信息如下

the request was rejected because no multipart boundary was found

原因分析:

报错信息为:请求被拒绝,因为找不到多部分边界
但是查阅csdn里的解决方法,都没有成功


解决方案:

将controller改为:
在这里插入图片描述
也就是取消了video的@RequestBody注解,video不用json形式传参

原因再分析

如果是加了@RequestBody注解,那么对象就是json形式,只能用postman里的raw方式写数据。
现在是用对象收参,postman里body选的是form-data,所以,video对象不能用@RequestBody修饰了

### 解决 UniApp 上传图片时出现 'the request was rejected because no multipart boundary was found' 错误 #### 前端配置 当使用 UniApp 进行文件上传操作时,如果遇到 `the request was rejected because no multipart boundary was found` 的错误提示,通常是因为请求头中的 Content-Type 设置不正确或未设置。对于多部分表单数据(multipart/form-data),浏览器会自动处理边界字符串(boundary),但如果手动设置了 contentType,则可能导致该问题。 为了防止此类情况发生,在发起 HTTP 请求之前应确保: - 不要显式指定 `Content-Type` 头部字段,让框架自动生成合适的值。 - 如果确实需要控制头部信息,可尝试将 `contentType` 设为 `false` 或者 `'application/x-www-form-urlencoded; charset=UTF-8'` 来允许默认行为[^1]。 以下是基于 Axios 库的一个解决方案实例,适用于大多数场景下的文件上传需求: ```javascript // 使用 axios 发送 POST 请求并携带文件对象作为 FormData 类型的数据体 import axios from "axios"; const uploadImage = (file) => { const formData = new FormData(); formData.append('image', file); return axios.post('/upload/image', formData, { headers: {'Content-Type': false} } // 关键在于这里设定了 Content-Type 为 false ); }; ``` 这段代码展示了如何通过禁用 `Content-Type` 自动推断来绕过上述提到的问题。需要注意的是,不同版本的库可能会有不同的实现细节,请参照具体文档调整参数名称和格式。 #### 后端处理方法 在 Java Spring Boot 中接收文件上传请求时,应该确保控制器能够解析来自客户端提交的内容。一般情况下,默认配置已经足够支持标准形式编码(`multipart/form-data`)的请求;然而,某些特殊情形下仍需额外注意以下几点: - 验证应用程序上下文中是否存在 MultipartResolver bean 实例化; - 检查 web.xml 文件或其他配置源里关于最大上传大小限制等属性设定是否合理; - 对于 RESTful API 接口设计而言,建议采用 @RequestParam 注解标注预期接收到的文件流变量名,并配合 MultipartFile 参数类型一起使用[^2]。 下面是一个简单的例子说明怎样定义一个用于接受图像资源的方法签名: ```java @PostMapping("/upload/image") public ResponseEntity<String> handleFileUpload(@RequestParam("image") MultipartFile image){ try{ byte[] bytes = image.getBytes(); // ...保存至数据库或者其他存储位置... return ResponseEntity.ok().body("成功"); }catch(Exception e){ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); } } ``` 此段代码片段提供了一个基本模式供开发者参考,实际项目开发过程中还需考虑更多因素如安全性验证、异常捕获机制等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值