使用表单文本字段以及Node和connect-busboy处理用户文件上传?

时间:2015-04-14 05:17:07

标签: javascript node.js express sequelize.js busboy

在Nodejs,sequelize和connect-busboy中处理文件上传和验证文本字段/插入数据库的标准做法是什么?

例如,如果我们有一个用户个人资料表单,其中最终用户必须输入名称,电子邮件并上传少量文件。

当用户提交表单时,服务器上的步骤是否,(1)验证文本字段(2)保存到db(3)中的User表将文件保存到磁盘(4)更新带有文件路径的用户行

在半伪代码中,我想象的是:

router.post('/formSubmit', function(req, res) {
    var name = ....;
    var email = ...;
    var files = [];

    // Sequelize will validate for us when creating a new row in User table
    User.create({ name: name, email: email}).success(function(user_row) {

        // save each files to disk
        ...

        // update user_row with the filepaths on disk.
        ...
    });
});

但是,我不确定如何将这种逻辑流程调整为connect-busboy

router.post('/formSubmit', busboy, function(req, res) {
    if (req.busboy) {
        busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
          var saveTo = path.join(os.tmpDir(), path.basename(fieldname));
          file.pipe(fs.createWriteStream(saveTo));
        });
        busboy.on('field', function(key, value, keyTruncated, valueTruncated) {
            // ...
        });
        busboy.on('finish', function() {
          res.writeHead(200, { 'Connection': 'close' });
          res.end("That's all folks!");
        });
        return req.pipe(busboy);
    }
    res.writeHead(404);
    res.end();
});

我有正确的想法吗?如果是这样,我如何调整验证,用户创建/更新到connect-busboy

如果我要离开,那么进行数据库验证,创建/更新用户字段以及还包括用户上传的标准做法是什么?

0 个答案:

没有答案