使用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器
它只支持urlencoded和json ,不再支持multipart ,如果你想使用multipart,你需要单独添加
您需要以前由bodyParser支持的multipart ,用于从客户端接收文件
你可以使用下面的任何一个;
- busboy(推荐,因为它很快)
- 多党
- mutler(包装为busboy,使您的生活更容易编码
- 强大