参考内容:https://blog.csdn.net/C_L99/article/details/124437743
axios在请求发送出去之前会进行一次拦截,自动给我们的请求设置一些参数。默认的请求头是application/x-www-form-urlencoded,如果我们没有在config中指定其它请求头的话,就会使用默认的。
又了解到,发送multipart/form-data格式的请求时,不需要我们自己指定Content-Type属性,由浏览器自动帮我们去设置
axios的config中有一个transformRequest属性,官方的解释是可以在请求发送之前让我们人为干预。属性值是一个数组,里面可以定义一个函数,接收两个参数,分别是data和headers。data就是我们刚刚定义的FormData对象,headers里面则是axios预定义的请求头
打印headers:
将post属性中的Content-Type属性删掉即可解决问题。
最终代码如下:
async handleUploadFile(event) {
const file = event.target.files[0]
let formData = new FormData()
formData.append('files', file)
const res = await service({
url: '/api/files/upload',
method: 'POST',
transformRequest: [function(data, headers) {
// 去除post请求默认的Content-Type
delete headers.post['Content-Type']
return data
}],
data: formData
})
console.log(res.data);