我正在使用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 中间件是否正确,尽管它似乎在中间件......