Node.js 我如何使用中间件(特别是强大的中间件)和Bogart来创建服务器响应?

Node.js 我如何使用中间件(特别是强大的中间件)和Bogart来创建服务器响应?,node.js,middleware,Node.js,Middleware,我正在使用这个框架构建一个node.js应用程序,我想用它来处理文件上传 这是我的HTML(或多或少是直接从强大的文档中复制的): 当我提交数据时,我的节点服务器会记录“开始解析文件。”,表明它已收到帖子,但“已完成解析文件。”,以.parse()回调的形式,从未被记录,所以我想解析一定出了问题。我没有收到其他错误——客户端只是无限期地等待服务器响应 我的直觉是我不理解如何正确地使用中间件,但我也不确定调用强大的中间件是不是正确的,虽然它似乎是在事物的中间……/P>我认为第一步是确保你把所有的表

我正在使用这个框架构建一个node.js应用程序,我想用它来处理文件上传

这是我的HTML(或多或少是直接从强大的文档中复制的):

当我提交数据时,我的节点服务器会记录
“开始解析文件。”
,表明它已收到帖子,但
“已完成解析文件。”
,以.parse()回调的形式,从未被记录,所以我想解析一定出了问题。我没有收到其他错误——客户端只是无限期地等待服务器响应


我的直觉是我不理解如何正确地使用中间件,但我也不确定调用强大的中间件是不是正确的,虽然它似乎是在事物的中间……/P>我认为第一步是确保你把所有的表单数据都提交到请求中。Bogart测试有一个表单上传测试,它本质上只是获取上传并通过管道将其返回,这可能是检查表单数据格式是否正确的好方法。谢谢你。对我来说,使用Parted比使用fordable更有意义,尽管我仍然很好奇如何使用没有内置到Bogart中的中间件。我猜Forgible期望的req与通过Bogart路由器传递的req非常不同。关于Parted,您知道如何访问诸如on('part')之类的内容,或者在文件重新组装后如何访问文件吗?req主体只包含文件一部分的路径。实际上,我不确定Parted如何将文件拉入的确切细节,但我确实找到了发挥神奇作用的js:事件处理程序似乎隐藏在Parser对象中,这在Bogart实现中还不可用。我错误地认为req只包含到单个部分的路径——它有到整个文件的路径。我在没有使用任何框架的情况下也有同样的问题。
<form action="/upload" enctype="multipart/form-data" method="post">
    <input type="text" name="title"><br>
    <input type="file" name="upload" multiple="multiple"><br>
    <input type="submit" value="Upload">
</form>
var bogart = require('bogart'),
formidable = require('formidable');

var router = bogart.router();

router.post('/upload', function(req) {
    var form = new formidable.IncomingForm();
    var res = bogart.res();
    console.log("Beginning to parse files.");

    form.parse(req, function(err, fields, files) {
        console.log("Completed parsing files.");
        res.setHeader('Content-Type', 'text/plain');
        if (err) {
            console.log("Upload error.")
            res.status(500);
            res.send('Error');
            return res.end();
        }
        res.status(200);
        res.send("Success.");
        res.end();
    });
    return res;
});

var app = bogart.app();
app.use(bogart.batteries);
app.use(router);
app.start(8991, '127.0.0.1');