鍍金池/ 問答/HTML/ axios做圖片上傳問題

axios做圖片上傳問題

因為axios傳遞的參數(shù)是json格式的,后臺接受formdata形式的參數(shù),所以在全局配置了
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數(shù)據(jù)轉(zhuǎn)化成form-data格式了。
但是我現(xiàn)在在一個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';
    })
  },
  我在這里傳參格式已經(jīng)是form-data的格式了。不需要使用全局配置的qs轉(zhuǎn)化了。我把全局配置改成如下
  if(axios.method  === 'post' && axios.data.constructor !== FormData){

axios.defaults.transformRequest = [function (data) {

return qs.stringify(data)

}];
}
給轉(zhuǎn)化的條件加了限制,但是這樣一來,部分不是form-data傳參格式的接口 在這個判斷條件內(nèi)但是并沒有被qs轉(zhuǎn)化成form-data格式的。請問我的判斷條件寫的有什么問題呢 ,怎么修改。

回答
編輯回答
病癮
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
  }]
})
2018年6月27日 02:40