为了账号安全,请及时绑定邮箱和手机立即绑定

axios做图片上传问题

axios做图片上传问题

慕码人8056858 2019-03-05 14:15:40
因为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

  }]

})


查看完整回答
反对 回复 2019-03-26
  • 1 回答
  • 0 关注
  • 278 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信