springboot接收图片报错 request is not a multipart request 和 multipart boundary was found

后台接收到'not a multipart request'和'multipart boundary'错误,原因是前端请求头Content-Type未正确设置。使用FormData自动配置避免手动设置header,前端通过formData.append添加数据,指定name、value和filename。但在axios统一管理的项目中,直接使用可能影响可维护性,导致问题未完全解决。
摘要由CSDN通过智能技术生成

后台接收图片报错 request is not a multipart request 和 multipart boundary was found

request is not a multipart request 可能是因为前端没有指定请求头 Content-Type 为 multipart/form-data ,但是这个请求头不必在headers中指定。

如果直接在headers中指定,后端会因为检测不到 multipart boundary 而报错 the request was rejected because no multipart boundary was found 我们需要使用formData自动配置

FormData 接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去,本接口和此方法都相当简单直接。如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式。

———— https://developer.mozilla.org/zh-CN/docs/Web/API/FormData

解决方案

前端:

          // 这种方式会自动配置 multipart boundary
					let formData = new FormData()
          formData.append('file', data, 'file.png')
          //调用接口
          const xmlhttp = new XMLHttpRequest()
          xmlhttp.open('POST', 'http://localhost:8080/user/upload/avatar', true)
          xmlhttp.send(formData)
          xmlhttp.onreadystatechange = function () {
   
						// 请求发送之后的回调
          }

formData.append(name, value, filename);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值