强大的Express 500 TypeError:不能调用未定义的方法'complete'

我试图用NodeJS上传文件,我尝试了最常见的多部分库,但不能得到它的工作。

当我发送文件,我没有得到任何东西只是一个不存在的方法称为完整的500错误。 我尝试了一个类似的模块,它工作得很好。 有可能有一些变种崩溃? 我做了一些console.log,util,我没有得到任何可变的forms。

这是一段代码。 如果你有什么好的想法来解决这个问题,你需要更多的代码,随时提问!

var express = require('express'); var form = require('formidable'); var app = module.exports = express.createServer( express.favicon() , express.bodyParser() , express.cookieParser() , express.session({secret: 'topsecret'}) , everyauth.middleware() , express.router(routes) ); app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({secret: "aiudhasiudj12" })); app.use(everyauth.middleware()); app.use(app.router); app.set('view engine', 'jade'); app.use('views', __dirname + '/views'); app.use(express.static(__dirname + '/public')); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.use(form({ keepExtensions: true })); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); everyauth.everymodule .findUserById( function (userId, callback) { Login.findLocalByEmail([userId], function (error, results) { callback(null, { userId: userId, data: results}); }); }); everyauth.facebook... [...] app.get('/la', function(req, res){ res.send('<form action="la" method="post" enctype="multipart/form-data">' + '<p>Image: <input type="file" name="image" /></p>' + '<p><input type="submit" value="Upload" /></p>' + '</form>'); //console.log(util.inspect(form, true, null)); }); app.post('/la', function(req, res) { console.log(util.inspect(req.form, true, null)); req.form.complete(function(err, fields, files) { console.log(fields); console.log(files); if(err) { next(err); } else { } }); }); 

谢谢!

Express包括连接,包括强大的。

所有你需要做的就是使用bodyParser并检查“req.body”,它应该包含表单的所有字段。

你有两个select。

  1. 如果你想使用req.form ,你需要使用https://github.com/dandean/express-form中间件&#x3002;

  2. 但是,假设你真的想使用formidable ,你在你的请求处理程序中写的正确的代码如下。

     var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { res.writeHead(200, {'content-type': 'text/plain'}); res.write('received upload:\n\n'); res.end(sys.inspect({fields: fields, files: files})); }); 

如果您的html格式的文件input名称是“image”,那么您需要检查“req.files.image”。 尝试以下操作:

 console.log('File name: ' + req.files.image.name);