formData不为空,但sails.js使用vue.js获取空的req.body

formData不为空,但sails.js使用vue.js获取空的req.body,vue.js,sails.js,form-data,Vue.js,Sails.js,Form Data,我正在同时使用vue.js和sails.js,我需要创建一个带有图片和其他文本值的产品,我在整个表单中创建了一个formData对象,并向其中添加了一些数据。当我打算注销数据时,它不是空的,但当我使用req.body或req.params时,它显示空对象。 我的代码如下: var form = document.querySelector('form'); var formData = new FormData(form); formData.append('owner', cid);

我正在同时使用vue.js和sails.js,我需要创建一个带有图片和其他文本值的产品,我在整个表单中创建了一个formData对象,并向其中添加了一些数据。当我打算注销数据时,它不是空的,但当我使用
req.body
req.params
时,它显示空对象。 我的代码如下:

var form = document.querySelector('form');
  var formData = new FormData(form);
  formData.append('owner', cid);
  formData.append('name', this.name);
  formData.append('slug', this.slug);
  formData.append('description', this.editorData);
  formData.append('tags', this.tags);
  formData.append('categories', this.categories);
  formData.append('stock', this.stock);
  formData.append('price', this.price);

  for (let [key, value] of formData.entries()) { 
    console.log(key, value);
  }


  axios.post(API + 'product/new', formData)
  .then(function(response) {
    swal("ok",{
      icon: "success",
      button: false,
    });   
  })
  .catch(function(error) {
    swal("not ok",{
      icon: "error",
      button: false,
    }); 
    console.log(error.response);
      // remain silent
  });

我刚刚解决了这个问题,因为我已经做了三天了。 解决方案很简单,SailsJs req.body对象将只读取formdata对象或您传递给它的任何对象,只要它不在文件对象之后(如果您有)


为了更好地理解,请查看req.body上的文档

如果您正在上载文件,我认为您需要使用内容类型multipart/form数据对表单进行编码。因此,您的axios帖子需要类似于
axios({method:'post',url:API+'product/new',data:formData,config:{headers:{'Content-Type':'multipart/form data'}})“如果请求包含一个或多个文件上载,则在
req.body
中只有在第一个文件参数之前发送的文本参数可用”这是否意味着,在客户端,HTML应该最后包含文件类型
input
元素?(或者,对于客户端JS,就像您的例子一样,
formData
应该被构建成文件对象最后追加?)