使用angular度上传后使用节点存储图像

我正在使用mean stack创build一个web应用程序,其中任何用户都可以上传图像,并将其存储在mongo数据库或服务器系统的文件夹中。 我正在使用angular度file upload上传图像。 问题出现在nodejs部分,当我尝试打印req.body它显示一个空的对象。

HTMl代码: <input type="file" ng-file-select="onFileSelect($files)" >

angular码:

 $scope.onFileSelect = function($files) { for (var i = 0; i < $files.length; i++) { var file = $files[i]; console.log(file); $scope.upload = $upload.upload({ url: '/imagePost/'+Global.user._id, method: 'POST' , data: {myObj: 'image'}, file: file, }).progress(function(evt) { console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total)); }).success(function(data, status, headers, config) { console.log('success'); }); } }; 

节点代码:

 app.post('/imagePost/:userid',function(req,res){ console.log('I came here'); console.log(req.body); res.send(''); }); 

在这里,我只是试图打印requestbody,但我得到一个空的对象。 我包括了所有的依赖关系。 如果这不起作用,我觉得读取图像并发送请求,并在节点代码中创build一个新的图像,可以稍后存储在一个文件夹中。 但是为什么我没有在请求体中得到任何对象。 请帮帮我..

我想你正在使用Express v4.x

如果是的话,你会得到req.body中的空对象,因为从Express 4开始,bodyParser被弃用,并被body-parser取代。

阅读有关从v3到v4的迁移

  • 身体parsing器

它只支持urlencodedjson ,不再支持multipart ,如果你想使用multipart,你需要单独添加

您需要以前由bodyParser支持的multipart ,用于从客户端接收文件

你可以使用下面的任何一个;

  1. busboy(推荐,因为它很快)
  2. 多党
  3. mutler(包装为busboy,使您的生活更容易编码
  4. 强大