后台接收图片报错 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);