Bogartフレームワークを使用して node.js アプリを構築しています。ファイルのアップロードをFormidableで処理したいと考えています。
これが私のHTMLです(手ごわいドキュメントから多かれ少なかれ直接コピーされたものです):
<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() コールバックではログに記録されないため、解析で何か問題が発生しているに違いないと考えます。他にエラーは発生しません。クライアントはサーバーの応答を無期限に待ちます。
ミドルウェアの使い方がよくわからないというのが私の推測ですが、フォーミダブルミドルウェアと呼ぶのが正しいかどうかもわかりません。