1

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

这是我的 HTML(或多或少直接从 Formidable 文档中复制而来):

<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');

当我提交数据时,我的节点服务器记录"Beginning to parse files.",表明它已收到 POST,但是"Completed parsing files.",在 form.parse() 回调中,从未被记录,所以我认为解析一定有问题。我没有收到其他错误——客户端只是无限期地等待服务器响应。

我的预感是我不明白如何正确使用中间件,但我也不确定调用 Formidable 中间件是否正确,尽管它似乎在中间件......

4

0 回答 0