form.parse()方法没有在node.js中调用

时间:2012-11-15 13:52:47

标签: node.js formidable

我正在使用强大的程序包上传文件。 这是我的服务器端代码。

var formidable = require('formidable'),
    http = require('http'),
    util = require('util');
    app.post('/admin/uploads', function(req, res) {
         console.log(req.files, req.fields);//It prints
         var form = new formidable.IncomingForm(); 
         form.parse(req, function(err, fields, files) {
        console.log("Inside form parse.");//its not printing
        console.log(err, fields, files);//its not printing
         });
    form.on('file', function(name, file) {console.log('file='+file);});//its not printing
    form.on('error', function(err) { console.log(err); });//its not printing
    form.on('aborted', function() { console.log('Aborted'); });//its not printing
    console.log(form);//it prints


  });

在上面的代码中,form.parse()方法没有被调用。请为此问题提供解决方案。

4 个答案:

答案 0 :(得分:7)

可能需要删除正文解析器

delete app.use(express.bodyParser());

答案 1 :(得分:1)

我忘了在我的html表单中添加enctype =“ multipart / form-data”,也许这会帮助到别人:)

答案 2 :(得分:0)

请添加错误处理程序并发送错误消息,否则很难得到答案。

form.on('error', function(err) { console.log(err); });
form.on('aborted', function() { console.log('Aborted'); });

请参阅formidable文档:doc

答案 3 :(得分:0)

在所有form.parse(...)次事件后致电on(...)

app.post('/admin/uploads', function(req, res) {
    var form = new formidable.IncomingForm(); 
    form.on('file', function(name, file) { });
    form.on('error', function(err) { });
    form.on('aborted', function() { });
    form.parse(req, function(err, fields, files) { });
});