文件上传,前端file参数有值,后端却拿不到数据的踩坑

312 阅读1分钟

之前也遇到过这个问题,后端需要formdata格式数据,结果我用console.dir(formdata.get('key'))能拿到数据,但是接口就是说你没有,就很怪,看看请求头,也配置了'Content-Type': 'multipart/form-data',正当我一头雾水的时候,突然想起来,载荷的标题,如果是formdata,他会显示表单数据

image.png

但是我却显示的是请求载荷

image.png

而且外面还包了一层大括号,这个时候,我才想起来到如果后端只要formdata,data后面似乎不需要大括号,甚至头的设置也可以去掉,axios会自动配置,流汗了

// 错误代码
export const uploadInvoiceApi = (data) => {
  console.dir(data.file.get('file'))
  return request({
    url: baseUrl + '/invoice/upload?id=' + data.id,
    method: 'post',
    data: {
      file: data.file
    },
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

//正确代码
export const uploadInvoiceApi = (data) => {
  console.dir(data.file.get('file'))
  return request({
    url: baseUrl + '/invoice/upload?id=' + data.id,
    method: 'post',
    data: data.file
  })
}