因为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格式的。请问我的判断条件写的有什么问题呢 ,怎么修改。
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
const service = axios.create({
baseURL: baseUrl,
// headers: {
// 'Content-Type': 'application/x-www-form-urlencoded'
// },
transformRequest: [function (data) {
// data['src'] = 'dev'
if (data instanceof FormData) {
return data
}
data = qs.stringify(data)
return data
}]
})
添加回答
举报
0/150
提交
取消