この問題と同様の質問があったことは知っています。
私は express で formidable を使います。そして、「file」イベントが発生したときに「fileBegin」イベントが発生しなかったことがわかります。
明示的な定義は次のとおりです。
var app = express();
// all environments
process.env.port = 3001;
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
定義に欠けているものはありますか? 前もって感謝します
更新: アップロード ハンドラ:
function parseFormData(req,res,uploadDir){
var form = new formidable.IncomingForm();
var files = [];
try {
form.uploadDir = uploadDir;
form.parse(req, function() {
});
var logMsg;
form
.on('file',function(name, file) {
console.log('file found');
logMsg = util.format('Filename :%s\nFilesize: %s\nFilepath %s',file.name,file.size,file.path);
console.log(logMsg);
files.push(file);
})
.on('fileBegin',function(name, file) {
console.log('fileBegin file.name: '+file.name);
var targetFolder = path.dirname(file.path);
file.path = path.join(targetFolder,file.name);
console.log('new path: '+file.path);
})
.on('end', function() {
console.log(util.inspect(files));
res.writeHead(200);
res.end('done');
console.log('end');
});
}
catch(error){
res.end('done');
}
}