javascript - 使用 Angular 上传后使用 Node 存储图像

标签 javascript node.js angularjs http

我正在使用 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

  • 正文解析器

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

你需要 multipart 来接收来自你客户端的文件

您可以使用以下任何一种;

  1. busboy(推荐,因为它很快)
  2. 多方
  3. mutler(busboy 的包装器,让您的编码生活更轻松
  4. 强大

关于javascript - 使用 Angular 上传后使用 Node 存储图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034223/

相关文章:

javascript - Sequelize,请求带有评级和标签的产品时出现问题

javascript - Node.js Redis lpush 错误

javascript - Angular : Not able to access variables in controller using service

javascript - 无法从 codenvy 预览/运行 angular.js 项目

javascript - AngularJS 输入 url 无效/有效/错误

javascript 函数 - 传递到函数中的变量适用于 IE,但不适用于 Firefox

javascript - 将垂直堆积条转换为水平堆积条 D3.js v4

javascript - 如何在函数内返回 node.js 中导入的模块?

javascript - 如何在两个var为true后添加+1

javascript - Node.js 中的异步 http.get 调用(Learyounode 练习)