私は最近、自分の環境をノードv0.6.3にアップグレードしました。express/connect-formフォームイベントリスナーが起動しない
var fs = require('fs'),
client = require('../app'),
exec = require('child_process').exec,
socket = require('../socket')
var supported = [ 'image/jpeg',
'image/pjpeg',
'image/bmp',
'image/gif',
'image/tiff',
'image/png']
var maxSize = 204800;
module.exports = function(req, res) {
console.log(JSON.stringify(req.form));
var tmpPath = '';
req.form.on('fileBegin', function(err, fileInfo) {
console.log('upload file begin')
if (fileInfo.path) {tmpPath = fileInfo.path};
socket.emit('attachment_upload_started', req.query.user, {friend: req.query.friend}, []);
});
req.form.on('progress', function(bytesReceived, bytesExpected) {
var percent = (bytesReceived/bytesExpected * 100) | 0;
socket.emit('attachment_progress', req.query.user, {progress: percent, friend: req.query.friend}, []);
var child = exec('file --mime-type ' + tmpPath, function (err, stdout, stderr) {
var mimetype = stdout.substring(stdout.lastIndexOf(':') + 2, stdout.lastIndexOf('\n'));
if (!err && mimetype && supported.indexOf(mimetype)==-1 && mimetype!='Can\'t read SAT') {
socket.emit('attachment_error', req.query.user, {type: 'format', friend: req.query.friend}, []);
req.connection.destroy();
req.connection.resume = function(){};
console.log(mimetype)
console.log(err);
}
if (bytesExpected > maxSize) {
socket.emit('attachment_error', req.query.user, {type: 'size', friend: req.query.friend}, []);
req.connection.destroy();
req.connection.resume = function(){}
}
});
});
req.form.complete(function(err, fields, files){
console.log('form complete');
if (!err) {
if (supported.indexOf(files.upload.mime)==-1) {
console.log(files.upload.mime);
socket.emit('attachment_error', req.query.user, {type: 'format', friend: req.query.friend}, []);
}
else {
socket.emit('attachment_complete', req.query.user, {friend: req.query.friend, file: files.upload}, []);
}
}
else {
console.log('err');
}
res.redirect('/iattachment?user='+req.query.user+'&friend='+req.query.friend);
});
}
ファイル実際に私の/ tmpディレクトリにそれを作るんが、req.form.complete内のコードのいずれかreq.form.on:私は、次のページにファイルアップロードフォームを投稿すると、午前( 'progress')、req.form.on( 'fileBegin')リスナーが実行されます。どんな助けもありがとう!
はい、私はbodyParserを使用していました。それを削除すると、そのトリックが完了したように見えますが、他の機能が壊れています。ご協力いただきありがとうございます。 –