因为axios传递的参数是json格式的,后台接受formdata形式的参数,所以在全局配置了
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
import qs from 'qs';
axios.defaults.transformRequest = [function (data) {
return qs.stringify(data)
}];
用qs把json数据转化成form-data格式了。
但是我现在在一个vue组里做图片上传的功能,代码如下:
onRead(file) {
console.log(file);
let param = new FormData();
param.append('file', file.file, file.file.name);
param.append('userId', this.userInfo.userId);
param.append('token', this.userInfo.token);
let config = {
header: {'Content-Type': 'multipart/form-data'}
}
let that = this;
this.$http.post( that.baseUrl + '/user/headPicImg', param, config).then((res) => {
console.log(res);
that.imgSrc = 'http://116.62.208.141:8181/' + res.data.headImgPath || '../assets/imgs/gift.png';
})
},
我在这里传参格式已经是form-data的格式了。不需要使用全局配置的qs转化了。我把全局配置改成如下
if(axios.method === 'post' && axios.data.constructor !== FormData){
axios.defaults.transformRequest = [function (data) {
return qs.stringify(data)
}];
}
给转化的条件加了限制,但是这样一来,部分不是form-data传参格式的接口 在这个判断条件内但是并没有被qs转化成form-data格式的。请问我的判断条件写的有什么问题呢 ,怎么修改。
MMMHUHU
相关分类