【问题标题】:Storing Image using node after uploading using angular使用角度上传后使用节点存储图像
【发布时间】:2014-07-24 21:55:45
【问题描述】:

我正在使用平均堆栈创建一个 Web 应用程序,任何用户都可以在其中上传图像,并将其存储在 mongo db 或服务器系统的文件夹中。 我正在使用angular-file-upload 上传图片。问题出现在 nodejs 部分,当我尝试打印 req.body 时,它显示的是一个空对象。

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

角度代码:

$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('');
});

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

【问题讨论】:

  • 它不会在req.body,它会在req.files
  • 即使我尝试了 req.files,在这种情况下我得到了 undefined
  • 能否在 express 中添加您添加依赖项的部分(app.use())。
  • app.use(expressValidator()); app.use(bodyParser()); app.use(methodOverride()); app.use(cookieParser());
  • 读取图像并通过http发送数据并在节点中创建一个新图像是一个更好的主意..?

标签: javascript node.js angularjs http


【解决方案1】:

我认为您使用的是 Express v4.x

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

了解从 v3 到 v4 的迁移 here

  • 正文解析器

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

您需要 multipart 曾经受 bodyParser 支持,以便从您的客户端接收文件

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

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

【讨论】:

  • 谢谢你的回答我已经使用 mutler 解决了这个问题,而且它真的更容易编码......我怀疑有没有办法在单个 http 帖子中发送数据和文件...... ?不使用角度文件上传
  • 您需要使用 angular-file-upload 或任何自定义指令,因为 AngularJS 不支持文件上传,您可以尝试在数据中发送 JSON,例如:data: {myObj: 'image',数据:'你的数据'}
猜你喜欢
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2020-08-28
  • 1970-01-01
相关资源
最近更新 更多