connect-multiparty不能正确处理Angular JS文件上传

时间:2015-06-16 01:35:48

标签: express

过去几个小时我一直在撕扯我的头发,我希望有人可以帮助我。我有一个使用(https://github.com/danialfarid/ng-file-upload)的角度应用程序,无论我尝试什么,我似乎都无法在另一端获取文件。

我确实在Chrome开发者工具中看到了正确的请求有效负载:

  ------WebKitFormBoundaryEwG0XOfjS0IjwRji
  Content-Disposition: form-data; name="file"; filename="images.png"
   Content-Type: image/png


------WebKitFormBoundaryEwG0XOfjS0IjwRji-

我在服务器端的代码如下所示,我正在使用一个使用connect-multiparty的路由器。

Router.js:

router.post('/api/v1/uploaddocument', multipartyMiddleware, UserFunctions.saveDocument);

实际的保存文档功能:

saveDocument: function(req,res)
{   
 console.log(req.body, req.files, req.data, req.file)     
}

以角度发布此消息的控制器是:

iSelectClient.controller('PageUploadDocumentCtrl', ['$scope', 'Upload', function ($scope, Upload) {
    $scope.$watch('files', function () {
        $scope.upload($scope.files);
    });

    $scope.upload = function (files) {
        if (files && files.length) {
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                Upload.upload({
                    url: 'http://localhost:3000/api/v1/uploaddocument',
                    fields: {'username': $scope.username},
                    file: file
                }).progress(function (evt) {
                    var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
                    console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);
                }).success(function (data, status, headers, config) {
                    console.log('file ' + config.file.name + 'uploaded. Response: ' + data);
                });
            }
        }
    };
}]);

我没有在服务器端使用app.use(bodyparser()),因为我正在定义要使用哪个解析器的每个路由。

它可能是什么?

修改 我在每次调用时都有一个拦截器,它将应用程序类型设置为json,因此它从未正确到达另一端。现在修复,使用与下面完全相同的设置

1 个答案:

答案 0 :(得分:0)

我在每次调用时都有一个拦截器,它将应用程序类型设置为json,因此它从未正确到达另一端。现在修复,使用与下面完全相同的设置