Angularjs $ http不发送数据

时间:2014-06-16 11:12:52

标签: angularjs http

我正在处理一个表单,用户可以在其中更新自己的个人资料数据并更改头像。我的客户端代码如下所示:

$http({
    method : 'PUT',
    url:  '/api/users/'+ userId,
    headers: { 'Content-Type': undefined},
    transformRequest: function(data){
      var fd = new FormData();
      fd.append('avatar', data.avatar);
      fd.append('user', angular.toJson(data.user));
      return fd;
    },
    data : {user: $scope.userData, avatar: $scope.file}
  })

其中$ scope.file是图像文件,$ scope.userData是其他数据。 我使用一个指令将回调绑定到input元素中的'change'动作。

  el.bind('change', function(event){
        var file = event.target.files[0];
         scope.$emit('fileselected', {file: file});
      });

在我的控制器中:

  $scope.$on('filesselected', function (event, args) {
    $scope.$apply(function () {
      $scope.getFile(args.file);
      $scope.file = args.file;
    });
  });

底线,没有数据发送到服务器。我在服务器端使用Express和 console.log(req.body)的输出是{}


解决

好的,我刚想通了。问题出在Express body解析器上。我必须手动安装'multiparty'解析器。它现在有效

0 个答案:

没有答案