NodeJS多方文件上传到Azure和文本字段

时间:2018-04-01 14:17:24

标签: node.js azure multipartform-data multiparty

我需要在继续Azure文件上传之前验证是否存在mongodb文档。

表单由文件和文本字段组成,所需的逻辑如下:

  1. 表单提交
  2. 获取文字字段
  3. 在mongodb中搜索包含文本字段数据的文档
  4. 如果项目存在,请继续将文件上载到Azure,否则返回
  5. 文件上传到Azure
  6. 将URL保存到
  7. 中的同一MongoDB文档中的文件中

    我面临的问题是我无法触摸form.on('part')中的字段数据,并且无法首先使用form.parse。 这是我的代码,我愿意更改库并尽一切可能使它工作。

    var form = new multiparty.Form();
    var formField = "";
    form.parse(req, function(err, fields, files) {
      formField = fields.fieldinform[0];
    });
    console.log(formField); //empty async?
    
    model
      .findOne({ name: formField })
      .then(obj => {
        form.on("part", function(part) {
    
          if (!part.filename) return;
    
    
          var size = part.byteCount;
          var name = part.filename;
          var container = "test";
    
          blobService.createBlockBlobFromStream(
            container,
            name,
            part,
            size,
            function(error) {
              if (error) {
                console.log("failed");
              }
            }
          );
        });
      })
      .catch(e => {
        //do not continue
      });
    

    帮助将受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

经过大量搜索并没有得到正确的答案后,我决定使用jquery在提交之前将表单的操作URL更改为/ upload / textintextfield,然后使用节点中的req.params.textfield获取。

<script>
$('#fileUploadForm').submit(function() {
$('#fileUploadForm').attr('action', '/upload/addvideo/' + $('#textfield').val())
return true; 
});
</script>
相关问题