过去几个小时我一直在撕扯我的头发,我希望有人可以帮助我。我有一个使用(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,因此它从未正确到达另一端。现在修复,使用与下面完全相同的设置
答案 0 :(得分:0)
我在每次调用时都有一个拦截器,它将应用程序类型设置为json,因此它从未正确到达另一端。现在修复,使用与下面完全相同的设置