busboyを使用して、node.js と express.js でファイル共有プラットフォームを開発しています。
現時点では問題なく動作しますが、大きなファイルをアップロードしています。
その場合、大きなファイルがアップロードされている間、サーバーは新しいリクエストを受け入れません。
私は普通ですか?もしそうなら、アップロードにもっと時間がかかることを意味するとしても、この動作を改善する方法...
今のところ、ubuntu のかなり良い PC (asus i7/8G) の localhost で開発とテストを行っています。
大きなファイルのアップロードを開始し、新しいタブを開いてアプリに移動すると、アップロードが完了したときにのみタブが読み込まれます。
アプリケーションの読み込み:
var app = express();
//...
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(methodOverride());
// Request multipart parsing middleware
app.use(busboy());
// default options, immediately start reading from the request stream and
// parsing
app.use(busboy({ immediate: true }));
私のアップロード方法files controller
:
exports.create = function(req, res) {
var _file = new File(req.body);
req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
file.on('data', function(data) {
_file.data += data;
});
file.on('end', function() {
_file.save(function(err) {
if (err) {
console.error(err);
return res.status(500).send({
message: errorHandler.getErrorMessage(err)
});
} else {
// doing some stuff on save
}
});
});
});
// req.busboy.on('field', function(key, value, keyTruncated, valueTruncated) {
// console.log('Field [' + key + ']: value: ' + value);
// });
// req.busboy.on('finish', function() {
// console.log('Done parsing form!');
// });
req.pipe(req.busboy);
};