我正在使用 mean stack 创建一个网络应用程序,任何用户都可以在其中上传图像,并将其存储在 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');
});
}
};
Node 代码:
app.post('/imagePost/:userid',function(req,res){
console.log('I came here');
console.log(req.body);
res.send('');
});
这里我只是尝试打印 requestbody 但我得到一个空对象。我包括了所有的依赖项。 如果这不起作用,我想做的是读取图像并根据请求发送它,并在 Node 代码中创建一个新图像,稍后可以将其存储在文件夹中。 但是为什么我没有在请求正文中得到任何对象。请帮助我..
最佳答案
我认为您使用的是 Express v4.x
如果是,您将在 req.body 中得到空对象,因为从 Express 4 开始,bodyParser 已被弃用并被 body-parser 取代。
了解从 v3 到 v4 的迁移 here
- 正文解析器
只支持urlencoded和json,不再支持multipart,如果要使用multipart,需要单独添加
你需要 multipart 来接收来自你客户端的文件
您可以使用以下任何一种;
- busboy(推荐,因为它很快)
- 多方
- mutler(busboy 的包装器,让您的编码生活更轻松
- 强大
关于javascript - 使用 Angular 上传后使用 Node 存储图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034223/