用连接forms上传文件

我试图上传connect-form文件,但如果我想上传我必须禁用app.js bodyParser() ,如果我保持bodyParser()它将有错误: loading forever
这是我的app.js

  app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.set('view option', { layout: false }); // app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(require('stylus').middleware({ src: __dirname + '/public' })); app.use(express.static(__dirname + '/public')); app.use(express.cookieParser()); app.use(express.session({secret: 'secrect', store: MemStore({ reapInterval: 60000 * 10 })})); app.use(app.router); }); 

这是我调用upload file代码

 app.post('/album/upload', function( req, res) { req.form.complete(function(err, fields, files) { if (err) { next(err); console.log('error upload') } else { console.log(fields); console.log('---------------'); console.log(files); res.send('upload successfull'); } }); }); 

那么,我怎样才能禁用bodyParser()当我打电话上传文件,或者无论如何帮助我上传文件不会得到错误。

两件事情:

  • Express是基于连接的。
  • bodyParser基于强大的,连接forms是基于强大的。

有bodyParser和连接forms就像parsing请求的主体两次,但第二次,networkingstream是空的,将无法parsing任何东西,永远等待input。

当连接2.0发布时,这个问题已经升级,扩展了处理多部分请求的能力,使得连接forms已经过时。

无论如何,文件都应该上传,只要bodyParser,并存储在req.files

看看: https : //github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js (这是当bodyParser遇到多部分请求时正在做的事情)。